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/10 10:26:55 UTC

incubator-ignite git commit: #ignite-964: add sql query examples.

Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-964-1 91f18fb63 -> d4c223cac


#ignite-964: add sql query examples.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/d4c223ca
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/d4c223ca
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/d4c223ca

Branch: refs/heads/ignite-964-1
Commit: d4c223cac244255a8bf38430e51e47f60762a44c
Parents: 91f18fb
Author: ivasilinets <iv...@gridgain.com>
Authored: Fri Jul 10 11:26:48 2015 +0300
Committer: ivasilinets <iv...@gridgain.com>
Committed: Fri Jul 10 11:26:48 2015 +0300

----------------------------------------------------------------------
 examples/src/main/js/cache-query-example.js     |  99 +++++++++++++----
 .../main/js/cache-sql-fields-query-example.js   | 106 +++++++++++++++++++
 2 files changed, 183 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d4c223ca/examples/src/main/js/cache-query-example.js
----------------------------------------------------------------------
diff --git a/examples/src/main/js/cache-query-example.js b/examples/src/main/js/cache-query-example.js
index 5241e69..18b1482 100644
--- a/examples/src/main/js/cache-query-example.js
+++ b/examples/src/main/js/cache-query-example.js
@@ -22,36 +22,91 @@ var SqlQuery = apacheIgnite.SqlQuery;
 var SqlFieldsQuery = apacheIgnite.SqlFieldsQuery;
 var CacheEntry = apacheIgnite.CacheEntry;
 
-var cacheName = "CacheQueryExample";
 
-Ignition.start(['127.0.0.1:9095'], null, onConnect);
+/**
+  * Cache queries example. This example demonstrates SQL queries over cache.
+  * <p>
+  * Remote nodes should always be started with special configuration file which
+  * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/js/example-js-cache.xml'}.
+  * <p>
+  * Alternatively you can run ExampleJsNodeStartup in another JVM which will
+  * start node with {@code examples/config/js/example-js-cache.xml} configuration.
+  */
+main() {
+    /** Cache name. */
+    var cacheName = "CacheQueryExample";
 
-function onConnect(err, ignite) {
-    if (err !== null)
-        throw "Start remote node with config examples/config/js/example-js-cache.xml.";
+    /** Connect to node that started with {@code examples/config/js/example-js-cache.xml} configuration. */
+    Ignition.start(['127.0.0.1:9095'], null, onConnect);
 
-    console.log(">>> Cache query example started.");
+    function onConnect(err, ignite) {
+        if (err !== null)
+            throw "Start remote node with config examples/config/js/example-js-cache.xml.";
 
-    var entries = [new CacheEntry("key0", "val0"), new CacheEntry("key1", "val1")];
+        console.log(">>> Cache query example started.");
 
-    ignite.getOrCreateCache(cacheName, function(err, cache) {
-            cache.putAll(entries, onCachePut.bind(null, ignite));
-        });
-}
+        var entries = initializeEntries();
 
-function onCachePut(ignite, err) {
-    var qry = new SqlQuery("Select * from String");
-    qry.setReturnType("String");
+        ignite.getOrCreateCache(cacheName, function(err, cache) {
+                cacheQuery(ignite, cache, entries);
+            });
+    }
 
-     var fullRes = [];
+    function cacheQuery(ignite, cache, entries) {
+        cache.putAll(entries, onCachePut.bind(null, ignite));
 
-    qry.on("page", function(res) {
-        fullRes = fullRes.concat(res);
-    });
+        function onCachePut(ignite, err) {
+            console.log(">>> Create cache for people.")
 
-    qry.on("end", function(err) {
-        console.log(fullRes);
-    });
+            //SQL clause which selects salaries based on range.
+            var qry = new SqlQuery("salary > ? and salary <= ?");
+            qry.setReturnType("Object");
 
-    ignite.cache(cacheName).query(qry);
+            // Set page size for query.
+            qry.setPageSize(2);
+
+            //Set salary range.
+            qry.setArguments([0, 2000]);
+
+            var fullRes = [];
+
+            //This function is called when we get part of query result.
+            qry.on("page", function(res) {
+                console.log(">>> Get result on page: " + JSON.stringify(res));
+
+                fullRes = fullRes.concat(res);
+            });
+
+            //This function is called when query is finished.
+            qry.on("end", function(err) {
+                console.log(">>> People with salaries between 0 and 2000 (queried with SQL query): " +
+                    JSON.stringify(fullRes));
+
+                // Destroying cache.
+                ignite.destroyCache(cacheName, function(err) {
+                        console.log(">>> End of query example.");
+                    });
+            });
+
+            //Run query.
+            ignite.cache(cacheName).query(qry);
+        }
+    }
+
+    // Initialize cache for people.
+    function initializeEntries() {
+        var key1 = "1";
+        var value1 = {"firstName" : "John", "lastName" : "Doe", "salary" : 2000};
+        var key2 = "2";
+        var value2 = {"firstName" : "Jane", "lastName" : "Doe", "salary" : 1000};
+        var key3 = "3";
+        var value3 = {"firstName" : "John", "lastName" : "Smith", "salary" : 1000};
+        var key4 = "4";
+        var value4 = {"firstName" : "Jane", "lastName" : "Smith", "salary" : 2000};
+        var key5 = "5";
+        var value5 = {"firstName" : "Ann", "lastName" : "Smith", "salary" : 3000};
+
+        return [new CacheEntry(key1, value1), new CacheEntry(key2, value2),
+            new CacheEntry(key3, value3), new CacheEntry(key4, entry4)];
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d4c223ca/examples/src/main/js/cache-sql-fields-query-example.js
----------------------------------------------------------------------
diff --git a/examples/src/main/js/cache-sql-fields-query-example.js b/examples/src/main/js/cache-sql-fields-query-example.js
new file mode 100644
index 0000000..64a50f7
--- /dev/null
+++ b/examples/src/main/js/cache-sql-fields-query-example.js
@@ -0,0 +1,106 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var apacheIgnite = require("apache-ignite");
+
+var Ignition = apacheIgnite.Ignition;
+var SqlQuery = apacheIgnite.SqlQuery;
+var SqlFieldsQuery = apacheIgnite.SqlFieldsQuery;
+var CacheEntry = apacheIgnite.CacheEntry;
+
+/**
+  * Cache queries example. This example demonstrates SQL queries over cache.
+  * <p>
+  * Remote nodes should always be started with special configuration file which
+  * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/js/example-js-cache.xml'}.
+  * <p>
+  * Alternatively you can run ExampleJsNodeStartup in another JVM which will
+  * start node with {@code examples/config/js/example-js-cache.xml} configuration.
+  */
+main() {
+    /** Cache name. */
+    var cacheName = "CacheSqlFieldsQueryExample";
+
+    /** Connect to node that started with {@code examples/config/js/example-js-cache.xml} configuration. */
+    Ignition.start(['127.0.0.1:9095'], null, onConnect);
+
+    function onConnect(err, ignite) {
+        if (err !== null)
+            throw "Start remote node with config examples/config/js/example-js-cache.xml.";
+
+        console.log(">>> Cache sql fields query example started.");
+
+        var entries = initializeEntries();
+
+        ignite.getOrCreateCache(cacheName, function(err, cache) {
+                cacheSqlFieldsQuery(ignite, cache, entries);
+            });
+    }
+
+    function cacheSqlFieldsQuery(ignite, cache, entries) {
+        cache.putAll(entries, onCachePut.bind(null, ignite));
+
+        function onCachePut(ignite, err) {
+            console.log(">>> Create cache for people.")
+
+            //Sql query to get names of all employees.
+            var qry = new SqlFieldsQuery("select concat(firstName, ' ', lastName) from Person");
+
+            // Set page size for query.
+            qry.setPageSize(2);
+
+            var fullRes = [];
+
+            //This function is called when we get part of query result.
+            qry.on("page", function(res) {
+                console.log(">>> Get result on page: " + JSON.stringify(res));
+
+                fullRes = fullRes.concat(res);
+            });
+
+            //This function is called when query is finished.
+            qry.on("end", function(err) {
+                console.log(">>> Names of all employees:): " + JSON.stringify(fullRes));
+                    
+                // Destroying cache.
+                ignite.destroyCache(cacheName, function(err) {
+                        console.log(">>> End of sql fields query example.");
+                    });
+            });
+
+            //Run query.
+            ignite.cache(cacheName).query(qry);
+        }
+    }
+
+    // Initialize cache for people.
+    function initializeEntries() {
+        var key1 = "1";
+        var value1 = {"firstName" : "John", "lastName" : "Doe", "salary" : 2000};
+        var key2 = "2";
+        var value2 = {"firstName" : "Jane", "lastName" : "Doe", "salary" : 1000};
+        var key3 = "3";
+        var value3 = {"firstName" : "John", "lastName" : "Smith", "salary" : 1000};
+        var key4 = "4";
+        var value4 = {"firstName" : "Jane", "lastName" : "Smith", "salary" : 2000};
+        var key5 = "5";
+        var value5 = {"firstName" : "Ann", "lastName" : "Smith", "salary" : 3000};
+
+        return [new CacheEntry(key1, value1), new CacheEntry(key2, value2),
+            new CacheEntry(key3, value3), new CacheEntry(key4, entry4)];
+    }
+}
\ No newline at end of file