You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by iv...@apache.org on 2015/07/27 12:23:33 UTC
incubator-ignite git commit: #ignite-961: add metadata test for
nodejs.
Repository: incubator-ignite
Updated Branches:
refs/heads/ignite-961 9289dab01 -> 70a8b2f90
#ignite-961: add metadata test for nodejs.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/70a8b2f9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/70a8b2f9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/70a8b2f9
Branch: refs/heads/ignite-961
Commit: 70a8b2f9002057b9f70bf328a201f7c33d5350a4
Parents: 9289dab
Author: ivasilinets <iv...@gridgain.com>
Authored: Mon Jul 27 13:23:24 2015 +0300
Committer: ivasilinets <iv...@gridgain.com>
Committed: Mon Jul 27 13:23:24 2015 +0300
----------------------------------------------------------------------
modules/nodejs/src/main/js/cache.js | 30 +++++++++--
.../ignite/internal/NodeJsSqlQuerySelfTest.java | 9 ++++
modules/nodejs/src/test/js/test-query.js | 53 +++++++++++++++++++-
3 files changed, 87 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/70a8b2f9/modules/nodejs/src/main/js/cache.js
----------------------------------------------------------------------
diff --git a/modules/nodejs/src/main/js/cache.js b/modules/nodejs/src/main/js/cache.js
index a232558..1600eaa 100644
--- a/modules/nodejs/src/main/js/cache.js
+++ b/modules/nodejs/src/main/js/cache.js
@@ -269,7 +269,7 @@ Cache.prototype.size = function(callback) {
* @returns {QueryCursor} Cursor for current query.
*/
Cache.prototype.query = function(qry) {
- return new QueryCursor(this, qry, true, null);
+ return new QueryCursor(this, qry, true, null, null);
}
Cache.prototype.__createPromise = function(cmd) {
@@ -302,12 +302,14 @@ Cache.prototype._createCommand = function(name) {
* @param {SqlQuery|SqlFieldsQuery} qry Sql query
* @param {boolean} init True if query is not started
* @param {Object[]} res Current page result
+ * @param fieldsMeta Fields metadata.
*/
-QueryCursor = function(cache, qry, init, res) {
+QueryCursor = function(cache, qry, init, res, fieldsMeta) {
this._qry = qry;
this._cache = cache;
this._init = init;
this._res = res;
+ this._fieldsMeta = fieldsMeta;
}
/**
@@ -342,6 +344,10 @@ QueryCursor.prototype.getAll = function() {
else {
cursor._res = res;
+ if (cursor._fieldsMeta === null) {
+ cursor._fieldsMeta = res["fieldsMetadata"];
+ }
+
fullRes = fullRes.concat(res["items"]);
if (res["last"]) {
@@ -372,20 +378,36 @@ QueryCursor.prototype.nextPage = function() {
var server = this._cache._server;
var qry = this._qry;
var cache = this._cache;
+ var fieldsMeta = this._fieldsMeta;
return new Promise(function(resolve, reject) {
server.runCommand(cmd, function(err, res) {
if(err !== null) {
- reject(err);
+ reject(err);
}
else {
- resolve(new QueryCursor(cache, qry, false, res));
+ if (fieldsMeta !== null) {
+ resolve(new QueryCursor(cache, qry, false, res, fieldsMeta));
+ }
+ else {
+ resolve(new QueryCursor(cache, qry, false, res, res["fieldsMetadata"]))
+ }
}
});
});
}
/**
+ * Gets query fields metadata
+ *
+ * @this{QueryCursor}
+ * @returns {Object[]} Query fields metadata.
+ */
+QueryCursor.prototype.fieldsMetadata = function() {
+ return this._fieldsMeta;
+}
+
+/**
* Gets collections of the query page results.
*
* @this{QueryCursor}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/70a8b2f9/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsSqlQuerySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsSqlQuerySelfTest.java b/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsSqlQuerySelfTest.java
index 2e4289e..22d7ad4 100644
--- a/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsSqlQuerySelfTest.java
+++ b/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsSqlQuerySelfTest.java
@@ -65,6 +65,15 @@ public class NodeJsSqlQuerySelfTest extends NodeJsAbstractTest {
/**
* @throws Exception If failed.
*/
+ public void testSqlFieldsMeta() throws Exception {
+ initCache();
+
+ runJsScript("testSqlFieldsMeta");
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
public void testCloseQuery() throws Exception {
initCache();
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/70a8b2f9/modules/nodejs/src/test/js/test-query.js
----------------------------------------------------------------------
diff --git a/modules/nodejs/src/test/js/test-query.js b/modules/nodejs/src/test/js/test-query.js
index dcbb310..3d55886 100644
--- a/modules/nodejs/src/test/js/test-query.js
+++ b/modules/nodejs/src/test/js/test-query.js
@@ -124,6 +124,8 @@ testSqlFieldsGetAllQuery = function() {
TestUtils.startIgniteNode().then(function(ignite) {
var qry = new SqlFieldsQuery("select concat(firstName, ' ', lastName) from Person");
+ var cursor = ignite.cache("person").query(qry);
+
function onQuery(fullRes) {
assert(fullRes.length === 4, "Result length is not correct" +
"[expected=1, val = " + fullRes.length + "]");
@@ -135,10 +137,14 @@ testSqlFieldsGetAllQuery = function() {
console.log("Result: " + JSON.stringify(fullRes));
+ var meta = cursor.fieldsMetadata();
+
+ assert(meta[0]["fieldName"] !== null, "Incorrect fields meta.")
+
return ignite.cache("person").get("key");
}
- ignite.cache("person").query(qry).getAll().then(onQuery).then(function(){
+ cursor.getAll().then(onQuery).then(function(){
TestUtils.testDone();
})
}).catch(function(err) {
@@ -146,6 +152,51 @@ testSqlFieldsGetAllQuery = function() {
});
}
+testSqlFieldsMeta = function() {
+ TestUtils.startIgniteNode().then(function(ignite) {
+ var qry = new SqlFieldsQuery("select firstName, lastName from Person");
+
+ var fullRes = [];
+
+ function onQuery(cursor) {
+ var page = cursor.page();
+
+ fullRes = fullRes.concat(page);
+
+ var meta = cursor.fieldsMetadata();
+
+ console.log("Fields meta: " + JSON.stringify(meta))
+ assert(meta.length === 2, "Incorrect fields meta length [exp=2, val=" + meta.length + "]");
+
+ assert(meta[0]["fieldName"] === "FIRSTNAME", "Incorrect fields meta " +
+ "[exp=FIRSTNAME, val=" + meta[0]["fieldName"] + "]");
+ assert(meta[0]["fieldTypeName"] === "java.lang.String", "Incorrect fields meta " +
+ "[exp=java.lang.String, val=" + meta[0]["fieldTypeName"] + "]");
+ assert(meta[0]["schemaName"] === "person", "Incorrect fields meta " +
+ "[exp=person, val=" + meta[0]["schemaName"] + "]");
+ assert(meta[0]["typeName"] === "PERSON", "Incorrect fields meta " +
+ "[exp=PERSON, val=" + meta[0]["typeName"] + "]");
+
+ if (cursor.isFinished()) {
+ assert(fullRes.length === 4, "Result length is not correct" +
+ "[expected=1, val = " + fullRes.length + "]");
+
+ console.log("Result: " + JSON.stringify(fullRes));
+
+ TestUtils.testDone();
+
+ return;
+ }
+
+ cursor.nextPage().then(onQuery);
+ }
+
+ ignite.cache("person").query(qry).nextPage().then(onQuery);
+ }).catch(function(err) {
+ assert(err === null, err);
+ });
+}
+
testSqlQueryWithParams = function() {
TestUtils.startIgniteNode().then(function(ignite) {
var qry = new SqlQuery("salary > ? and salary <= ?");