You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by fe...@apache.org on 2018/12/21 07:03:53 UTC

[zeppelin] branch master updated: Revert "[ZEPPELIN-3882] Neo4jInterpreter - Support Point and Date Types" (#3270)

This is an automated email from the ASF dual-hosted git repository.

felixcheung pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/zeppelin.git


The following commit(s) were added to refs/heads/master by this push:
     new 45fa3fd  Revert "[ZEPPELIN-3882] Neo4jInterpreter - Support Point and Date Types" (#3270)
45fa3fd is described below

commit 45fa3fdac0c79f78f6d0416e1bbfce281ef4e0df
Author: Felix Cheung <fe...@users.noreply.github.com>
AuthorDate: Fri Dec 21 02:03:48 2018 -0500

    Revert "[ZEPPELIN-3882] Neo4jInterpreter - Support Point and Date Types" (#3270)
    
    * Revert "fix checkstyle"
    
    This reverts commit 5542262568b3532fd11e2832d3168b386f35b3d6.
    
    * Revert "Added support for Neo4j temporal and point types"
    
    This reverts commit b98ccea98996eda183382a332379f3cfc428c0e9.
    
    * Revert "Added support for Neo4j temporal and point types"
    
    This reverts commit 0fbcd1111dae980ff245eead964e8a5e0ee0f1a6.
---
 docs/interpreter/neo4j.md                          |   3 -
 neo4j/pom.xml                                      |   6 +-
 .../graph/neo4j/Neo4jCypherInterpreter.java        |  14 ---
 .../graph/neo4j/Neo4jCypherInterpreterTest.java    | 105 ++++-----------------
 4 files changed, 20 insertions(+), 108 deletions(-)

diff --git a/docs/interpreter/neo4j.md b/docs/interpreter/neo4j.md
index eec9e07..1b14127 100644
--- a/docs/interpreter/neo4j.md
+++ b/docs/interpreter/neo4j.md
@@ -26,9 +26,6 @@ limitations under the License.
 ## Overview
 [Neo4j](https://neo4j.com/product/) is a native graph database, designed to store and process graphs from bottom to top.
 
-### Supported Version
-
-The Neo4j Interpreter supports all Neo4j versions since v3 via the official [Neo4j Java Driver](https://github.com/neo4j/neo4j-java-driver)
 
 ![Neo4j - Interpreter - Video]({{BASE_PATH}}/assets/themes/zeppelin/img/docs-img/neo4j-interpreter-video.gif)
 
diff --git a/neo4j/pom.xml b/neo4j/pom.xml
index cc39fdc..b8a89ad 100644
--- a/neo4j/pom.xml
+++ b/neo4j/pom.xml
@@ -33,9 +33,9 @@
   <name>Zeppelin: Neo4j interpreter</name>
   
   <properties>
-  	<neo4j.driver.version>1.7.1</neo4j.driver.version>
-  	<test.neo4j.kernel.version>3.4.10</test.neo4j.kernel.version>
-  	<neo4j.version>3.4.10</neo4j.version>
+  	<neo4j.driver.version>1.4.3</neo4j.driver.version>
+  	<test.neo4j.kernel.version>3.2.3</test.neo4j.kernel.version>
+  	<neo4j.version>3.2.3</neo4j.version>
   	<jackson.version>2.8.9</jackson.version>
     <interpreter.name>neo4j</interpreter.name>
   </properties>
diff --git a/neo4j/src/main/java/org/apache/zeppelin/graph/neo4j/Neo4jCypherInterpreter.java b/neo4j/src/main/java/org/apache/zeppelin/graph/neo4j/Neo4jCypherInterpreter.java
index d7f8485..bcb9d7b 100644
--- a/neo4j/src/main/java/org/apache/zeppelin/graph/neo4j/Neo4jCypherInterpreter.java
+++ b/neo4j/src/main/java/org/apache/zeppelin/graph/neo4j/Neo4jCypherInterpreter.java
@@ -201,20 +201,6 @@ public class Neo4jCypherInterpreter extends Interpreter {
           value = val.asList();
         } else if (val.hasType(InternalTypeSystem.TYPE_SYSTEM.MAP())) {
           value = val.asMap();
-        } else if (val.hasType(InternalTypeSystem.TYPE_SYSTEM.POINT())) {
-          value = val.asPoint();
-        } else if (val.hasType(InternalTypeSystem.TYPE_SYSTEM.DATE())) {
-          value = val.asLocalDate();
-        } else if (val.hasType(InternalTypeSystem.TYPE_SYSTEM.TIME())) {
-          value = val.asOffsetTime();
-        } else if (val.hasType(InternalTypeSystem.TYPE_SYSTEM.LOCAL_TIME())) {
-          value = val.asLocalTime();
-        } else if (val.hasType(InternalTypeSystem.TYPE_SYSTEM.LOCAL_DATE_TIME())) {
-          value = val.asLocalDateTime();
-        } else if (val.hasType(InternalTypeSystem.TYPE_SYSTEM.DATE_TIME())) {
-          value = val.asZonedDateTime();
-        } else if (val.hasType(InternalTypeSystem.TYPE_SYSTEM.DURATION())) {
-          value = val.asIsoDuration();
         }
       }
       if (value instanceof Collection) {
diff --git a/neo4j/src/test/java/org/apache/zeppelin/graph/neo4j/Neo4jCypherInterpreterTest.java b/neo4j/src/test/java/org/apache/zeppelin/graph/neo4j/Neo4jCypherInterpreterTest.java
index 7940d5f..24bd513 100644
--- a/neo4j/src/test/java/org/apache/zeppelin/graph/neo4j/Neo4jCypherInterpreterTest.java
+++ b/neo4j/src/test/java/org/apache/zeppelin/graph/neo4j/Neo4jCypherInterpreterTest.java
@@ -55,15 +55,10 @@ public class Neo4jCypherInterpreterTest {
   private static final String REL_KNOWS = "KNOWS";
 
   private static final String CYPHER_FOREACH =
-          "FOREACH (x in range(1,100) | CREATE (:%s{name: \"name\" + x, age: %s, " +
-                  "address: point({ longitude: 56.7, latitude: 12.78, height: 8 }), " +
-                  "birth: date('1984-04-04')}))";
-  private static final String CHPHER_UNWIND = "UNWIND range(1,100) as x "
-        + "MATCH (n), (m) WHERE id(n) = x AND id(m) = toInt(rand() * 100) "
+          "FOREACH (x in range(1,1000) | CREATE (:%s{name: \"name\" + x, age: %s}))";
+  private static final String CHPHER_UNWIND = "UNWIND range(1,1000) as x "
+        + "MATCH (n), (m) WHERE id(n) = x AND id(m) = toInt(rand() * 1000) "
         + "CREATE (n)-[:%s]->(m)";
-  
-  private static final String TABLE_RESULT_PREFIX = "%table ";
-  private static final String NETWORK_RESULT_PREFIX = "%network ";
 
   @BeforeClass
   public static void setUpNeo4jServer() throws Exception {
@@ -78,7 +73,7 @@ public class Neo4jCypherInterpreterTest {
   public static void tearDownNeo4jServer() throws Exception {
     server.close();
   }
-
+  
   @Before
   public void setUpZeppelin() {
     Properties p = new Properties();
@@ -88,7 +83,7 @@ public class Neo4jCypherInterpreterTest {
     interpreter = new Neo4jCypherInterpreter(p);
     context = InterpreterContext.builder()
         .setInterpreterOut(new InterpreterOutput(null))
-        .build();
+        .build();;
   }
 
   @After
@@ -103,15 +98,14 @@ public class Neo4jCypherInterpreterTest {
             "return 'a' as colA, 'b' as colB, [1, 2, 3] as colC", context);
     assertEquals(Code.SUCCESS, result.code());
     final String tableResult = "colA\tcolB\tcolC\n\"a\"\t\"b\"\t[1,2,3]\n";
-    assertEquals(tableResult, result.toString().replace(TABLE_RESULT_PREFIX, StringUtils.EMPTY));
-
+    assertEquals(tableResult, result.toString().replace("%table ", StringUtils.EMPTY));
+    
     result = interpreter.interpret(
             "return 'a' as colA, 'b' as colB, [{key: \"value\"}, {key: 1}] as colC", context);
     assertEquals(Code.SUCCESS, result.code());
     final String tableResultWithMap =
             "colA\tcolB\tcolC\n\"a\"\t\"b\"\t[{\"key\":\"value\"},{\"key\":1}]\n";
-    assertEquals(tableResultWithMap, result.toString().replace(TABLE_RESULT_PREFIX,
-            StringUtils.EMPTY));
+    assertEquals(tableResultWithMap, result.toString().replace("%table ", StringUtils.EMPTY));
   }
 
   @Test
@@ -127,14 +121,10 @@ public class Neo4jCypherInterpreterTest {
     interpreter.open();
     InterpreterResult result = interpreter.interpret("MATCH (n:Person) "
             + "WHERE n.name IN ['name1', 'name2', 'name3'] "
-            + "RETURN n.name AS name, n.age AS age, "
-            + "n.address AS address, n.birth AS birth", context);
+            + "RETURN n.name AS name, n.age AS age", context);
     assertEquals(Code.SUCCESS, result.code());
-    final String tableResult = "name\tage\taddress\tbirth\n" +
-            "\"name1\"\t1\tPoint{srid=4979, x=56.7, y=12.78, z=8.0}\t1984-04-04\n" +
-            "\"name2\"\t2\tPoint{srid=4979, x=56.7, y=12.78, z=8.0}\t1984-04-04\n" +
-            "\"name3\"\t3\tPoint{srid=4979, x=56.7, y=12.78, z=8.0}\t1984-04-04\n";
-    assertEquals(tableResult, result.toString().replace(TABLE_RESULT_PREFIX, StringUtils.EMPTY));
+    final String tableResult = "name\tage\n\"name1\"\t1\n\"name2\"\t2\n\"name3\"\t3\n";
+    assertEquals(tableResult, result.toString().replace("%table ", StringUtils.EMPTY));
   }
 
   @Test
@@ -146,7 +136,7 @@ public class Neo4jCypherInterpreterTest {
     final String objectListKey = "object.listKey";
     InterpreterResult result = interpreter.interpret(jsonQuery, context);
     assertEquals(Code.SUCCESS, result.code());
-    String[] rows = result.toString().replace(TABLE_RESULT_PREFIX, StringUtils.EMPTY)
+    String[] rows = result.toString().replace("%table ", StringUtils.EMPTY)
             .split(Neo4jCypherInterpreter.NEW_LINE);
     assertEquals(rows.length, 2);
     List<String> header = Arrays.asList(rows[0].split(Neo4jCypherInterpreter.TAB));
@@ -163,7 +153,7 @@ public class Neo4jCypherInterpreterTest {
             + "AS array UNWIND array AS object RETURN object";
     result = interpreter.interpret(query, context);
     assertEquals(Code.SUCCESS, result.code());
-    rows = result.toString().replace(TABLE_RESULT_PREFIX, StringUtils.EMPTY)
+    rows = result.toString().replace("%table ", StringUtils.EMPTY)
             .split(Neo4jCypherInterpreter.NEW_LINE);
     assertEquals(rows.length, 3);
     header = Arrays.asList(rows[0].split(Neo4jCypherInterpreter.TAB));
@@ -185,7 +175,7 @@ public class Neo4jCypherInterpreterTest {
             + "AS array UNWIND array AS object RETURN object";
     result = interpreter.interpret(jsonListWithNullQuery, context);
     assertEquals(Code.SUCCESS, result.code());
-    rows = result.toString().replace(TABLE_RESULT_PREFIX, StringUtils.EMPTY)
+    rows = result.toString().replace("%table ", StringUtils.EMPTY)
             .split(Neo4jCypherInterpreter.NEW_LINE);
     assertEquals(rows.length, 3);
     header = Arrays.asList(rows[0].split(Neo4jCypherInterpreter.TAB, -1));
@@ -201,13 +191,13 @@ public class Neo4jCypherInterpreterTest {
     assertEquals(row.get(header.indexOf(objectKey)), "value2");
     assertEquals(row.get(header.indexOf(objectListKey)),
             "[{\"inner\":\"Map1\"},{\"inner\":\"Map2\"}]");
-
+    
     final String jsonListWithoutListKeyQuery = "WITH [{key: \"value\"},"
             + "{key: \"value2\", listKey: [{inner: \"Map1\"}, {inner: \"Map2\"}]}] "
             + "AS array UNWIND array AS object RETURN object";
     result = interpreter.interpret(jsonListWithoutListKeyQuery, context);
     assertEquals(Code.SUCCESS, result.code());
-    rows = result.toString().replace(TABLE_RESULT_PREFIX, StringUtils.EMPTY)
+    rows = result.toString().replace("%table ", StringUtils.EMPTY)
             .split(Neo4jCypherInterpreter.NEW_LINE);
     assertEquals(rows.length, 3);
     header = Arrays.asList(rows[0].split(Neo4jCypherInterpreter.TAB, -1));
@@ -229,7 +219,7 @@ public class Neo4jCypherInterpreterTest {
     interpreter.open();
     InterpreterResult result = interpreter.interpret(
             "MATCH (n)-[r:KNOWS]-(m) RETURN n, r, m LIMIT 1", context);
-    GraphResult.Graph graph = gson.fromJson(result.toString().replace(NETWORK_RESULT_PREFIX,
+    GraphResult.Graph graph = gson.fromJson(result.toString().replace("%network ",
             StringUtils.EMPTY), GraphResult.Graph.class);
     assertEquals(2, graph.getNodes().size());
     assertEquals(true, graph.getNodes().iterator().next().getLabel().equals(LABEL_PERSON));
@@ -258,65 +248,4 @@ public class Neo4jCypherInterpreterTest {
             context);
     assertEquals(Code.ERROR, result.code());
   }
-
-  @Test
-  public void testDates() {
-    InterpreterResult result = interpreter.interpret(
-            "RETURN datetime('2015-06-24T12:50:35.556+0100') AS theDateTime", context);
-    assertEquals(Code.SUCCESS, result.code());
-    assertEquals("theDateTime\n2015-06-24T12:50:35.556+01:00\n", result.toString()
-            .replace(TABLE_RESULT_PREFIX, StringUtils.EMPTY));
-
-    result = interpreter.interpret("RETURN localdatetime('2015185T19:32:24') AS theLocalDateTime",
-            context);
-    assertEquals(Code.SUCCESS, result.code());
-    assertEquals("theLocalDateTime\n2015-07-04T19:32:24\n", result.toString()
-            .replace(TABLE_RESULT_PREFIX, StringUtils.EMPTY));
-
-    result = interpreter.interpret("RETURN date('+2015-W13-4') AS theDate", context);
-    assertEquals(Code.SUCCESS, result.code());
-    assertEquals("theDate\n2015-03-26\n", result.toString()
-            .replace(TABLE_RESULT_PREFIX, StringUtils.EMPTY));
-
-    result = interpreter.interpret("RETURN time('125035.556+0100') AS theTime", context);
-    assertEquals(Code.SUCCESS, result.code());
-    assertEquals("theTime\n12:50:35.556+01:00\n", result.toString().replace(TABLE_RESULT_PREFIX,
-            StringUtils.EMPTY));
-
-    result = interpreter.interpret("RETURN localtime('12:50:35.556') AS theLocalTime", context);
-    assertEquals(Code.SUCCESS, result.code());
-    assertEquals("theLocalTime\n12:50:35.556\n", result.toString()
-            .replace(TABLE_RESULT_PREFIX, StringUtils.EMPTY));
-  }
-
-  @Test
-  public void testDuration() {
-    InterpreterResult result = interpreter.interpret(
-            "RETURN duration('P14DT16H12M') AS theDuration", context);
-    assertEquals(Code.SUCCESS, result.code());
-    assertEquals("theDuration\nP0M14DT58320S\n", result.toString()
-            .replace(TABLE_RESULT_PREFIX, StringUtils.EMPTY));
-  }
-
-  @Test
-  public void testPoint() {
-    InterpreterResult result = interpreter.interpret("RETURN point({ x:3, y:0 }) AS cartesian_2d,"
-            + "point({ x:0, y:4, z:1 }) AS cartesian_3d,"
-            + "point({ latitude: 12, longitude: 56 }) AS geo_2d,"
-            + "point({ latitude: 12, longitude: 56, height: 1000 }) AS geo_3d", context);
-    assertEquals(Code.SUCCESS, result.code());
-    assertEquals("cartesian_2d\tcartesian_3d\tgeo_2d\tgeo_3d\n" +
-            "Point{srid=7203, x=3.0, y=0.0}\tPoint{srid=9157, x=0.0, y=4.0, z=1.0}\t" +
-            "Point{srid=4326, x=56.0, y=12.0}\tPoint{srid=4979, x=56.0, y=12.0, z=1000.0}\n",
-            result.toString().replace(TABLE_RESULT_PREFIX, StringUtils.EMPTY));
-
-    result = interpreter.interpret(
-            "WITH point({ latitude: 12, longitude: 56, height: 1000 }) AS geo_3d " +
-            "RETURN geo_3d.latitude AS latitude, geo_3d.longitude AS longitude, " +
-                    "geo_3d.height AS height", context);
-    assertEquals(Code.SUCCESS, result.code());
-    assertEquals("latitude\tlongitude\theight\n" +
-                    "12.0\t56.0\t1000.0\n",
-            result.toString().replace(TABLE_RESULT_PREFIX, StringUtils.EMPTY));
-  }
 }