You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metamodel.apache.org by ka...@apache.org on 2019/03/05 03:23:02 UTC

[metamodel] branch master updated (f6a46c7 -> 83d861a)

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

kaspersor pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/metamodel.git.


    from f6a46c7  Updated CHANGES.md
     new cbe3bdb  Apache Impala support.Because this is no public repo for Impala jdbc,so I cannot add Impala dependency in pom.xml
     new 6399021  Empty commit to trigger rebuild
     new 2b6238d  add class's javadoc comments so that this relationship is clear to anyone reading the code.
     new 83d861a  Merge remote-tracking branch 'q977734161/master'

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../org/apache/metamodel/jdbc/JdbcDataContext.java |  6 ++-
 ...QueryRewriter.java => ImpalaQueryRewriter.java} | 22 +++++------
 ...riterTest.java => ImpalaQueryRewriterTest.java} | 44 ++++------------------
 3 files changed, 22 insertions(+), 50 deletions(-)
 copy jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/{SQLiteQueryRewriter.java => ImpalaQueryRewriter.java} (66%)
 copy jdbc/src/test/java/org/apache/metamodel/dialects/{HiveQueryRewriterTest.java => ImpalaQueryRewriterTest.java} (53%)


[metamodel] 03/04: add class's javadoc comments so that this relationship is clear to anyone reading the code.

Posted by ka...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 2b6238d7a371913b495acf2fa4cc0766d0d9dacd
Author: 李小保 <li...@mininglamp.com>
AuthorDate: Sun Mar 3 16:57:59 2019 +0800

    add class's javadoc comments so that this relationship is clear to anyone reading the code.
---
 .../java/org/apache/metamodel/jdbc/dialects/ImpalaQueryRewriter.java  | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/ImpalaQueryRewriter.java b/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/ImpalaQueryRewriter.java
index 8dc8976..90b04dc 100644
--- a/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/ImpalaQueryRewriter.java
+++ b/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/ImpalaQueryRewriter.java
@@ -22,6 +22,10 @@ import org.apache.metamodel.jdbc.JdbcDataContext;
 
 /**
  * Query rewriter for Apache Impala
+ *
+ * Because Impala uses the same metadata store as Hive to record information about table structure and properties,
+ * so Impala provides a high degree of compatibility with the Hive Query Language (HiveQL) ;
+ * @see <a href="http://impala.apache.org/docs/build/html/topics/impala_langref.html">impala.apache.org</a>
  **/
 public class ImpalaQueryRewriter extends Hive2QueryRewriter{
 


[metamodel] 02/04: Empty commit to trigger rebuild

Posted by ka...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 6399021e94021624e58aa3166d28d0d001c8439f
Author: 李小保 <li...@mininglamp.com>
AuthorDate: Tue Feb 26 20:18:41 2019 +0800

    Empty commit to trigger rebuild


[metamodel] 04/04: Merge remote-tracking branch 'q977734161/master'

Posted by ka...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 83d861a81de3e72be93c88620695d75350448326
Merge: f6a46c7 2b6238d
Author: Kasper Sørensen <i....@gmail.com>
AuthorDate: Mon Mar 4 19:22:47 2019 -0800

    Merge remote-tracking branch 'q977734161/master'

 .../org/apache/metamodel/jdbc/JdbcDataContext.java |  6 ++-
 .../jdbc/dialects/ImpalaQueryRewriter.java         | 36 +++++++++++++
 .../dialects/ImpalaQueryRewriterTest.java          | 60 ++++++++++++++++++++++
 3 files changed, 101 insertions(+), 1 deletion(-)



[metamodel] 01/04: Apache Impala support.Because this is no public repo for Impala jdbc, so I cannot add Impala dependency in pom.xml

Posted by ka...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit cbe3bdb9cac7bd59599610ea6acccdbed6e7a583
Author: 李小保 <li...@mininglamp.com>
AuthorDate: Tue Feb 26 20:04:07 2019 +0800

    Apache Impala support.Because this is no public repo for Impala jdbc,so I cannot add Impala dependency in pom.xml
---
 .../org/apache/metamodel/jdbc/JdbcDataContext.java |  6 ++-
 .../jdbc/dialects/ImpalaQueryRewriter.java         | 32 ++++++++++++
 .../dialects/ImpalaQueryRewriterTest.java          | 60 ++++++++++++++++++++++
 3 files changed, 97 insertions(+), 1 deletion(-)

diff --git a/jdbc/src/main/java/org/apache/metamodel/jdbc/JdbcDataContext.java b/jdbc/src/main/java/org/apache/metamodel/jdbc/JdbcDataContext.java
index 4329179..f868a74 100644
--- a/jdbc/src/main/java/org/apache/metamodel/jdbc/JdbcDataContext.java
+++ b/jdbc/src/main/java/org/apache/metamodel/jdbc/JdbcDataContext.java
@@ -52,6 +52,7 @@ import org.apache.metamodel.jdbc.dialects.Hive2QueryRewriter;
 import org.apache.metamodel.jdbc.dialects.HiveQueryRewriter;
 import org.apache.metamodel.jdbc.dialects.HsqldbQueryRewriter;
 import org.apache.metamodel.jdbc.dialects.IQueryRewriter;
+import org.apache.metamodel.jdbc.dialects.ImpalaQueryRewriter;
 import org.apache.metamodel.jdbc.dialects.MysqlQueryRewriter;
 import org.apache.metamodel.jdbc.dialects.OracleQueryRewriter;
 import org.apache.metamodel.jdbc.dialects.PostgresqlQueryRewriter;
@@ -95,6 +96,7 @@ public class JdbcDataContext extends AbstractDataContext implements UpdateableDa
     public static final String DATABASE_PRODUCT_ORACLE = "Oracle";
     public static final String DATABASE_PRODUCT_HIVE = "Apache Hive";
     public static final String DATABASE_PRODUCT_SQLITE = "SQLite";
+    public static final String DATABASE_PRODUCT_IMPALA = "Impala";
 
     public static final ColumnType COLUMN_TYPE_CLOB_AS_STRING =
             new ColumnTypeImpl("CLOB", SuperColumnType.LITERAL_TYPE, String.class, true);
@@ -255,7 +257,9 @@ public class JdbcDataContext extends AbstractDataContext implements UpdateableDa
             }
         } else if (DATABASE_PRODUCT_SQLITE.equals(_databaseProductName)) {
             setQueryRewriter(new SQLiteQueryRewriter(this));
-        } else {
+        } else if (DATABASE_PRODUCT_IMPALA.equals(_databaseProductName)) {
+            setQueryRewriter(new ImpalaQueryRewriter(this));
+        }else {
             setQueryRewriter(new DefaultQueryRewriter(this));
         }
 
diff --git a/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/ImpalaQueryRewriter.java b/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/ImpalaQueryRewriter.java
new file mode 100644
index 0000000..8dc8976
--- /dev/null
+++ b/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/ImpalaQueryRewriter.java
@@ -0,0 +1,32 @@
+/**
+ * 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.
+ */
+package org.apache.metamodel.jdbc.dialects;
+
+import org.apache.metamodel.jdbc.JdbcDataContext;
+
+/**
+ * Query rewriter for Apache Impala
+ **/
+public class ImpalaQueryRewriter extends Hive2QueryRewriter{
+
+    public ImpalaQueryRewriter(JdbcDataContext dataContext) {
+        super(dataContext);
+    }
+}
+
diff --git a/jdbc/src/test/java/org/apache/metamodel/dialects/ImpalaQueryRewriterTest.java b/jdbc/src/test/java/org/apache/metamodel/dialects/ImpalaQueryRewriterTest.java
new file mode 100644
index 0000000..8aff060
--- /dev/null
+++ b/jdbc/src/test/java/org/apache/metamodel/dialects/ImpalaQueryRewriterTest.java
@@ -0,0 +1,60 @@
+/**
+ * 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.
+ */
+package org.apache.metamodel.dialects;
+
+import static junit.framework.TestCase.assertEquals;
+import static org.apache.metamodel.jdbc.JdbcDataContext.DATABASE_PRODUCT_HIVE;
+import static org.apache.metamodel.jdbc.JdbcDataContext.DATABASE_PRODUCT_IMPALA;
+
+import junit.framework.TestCase;
+import org.apache.metamodel.jdbc.JdbcDataContext;
+import org.apache.metamodel.jdbc.dialects.Hive2QueryRewriter;
+import org.apache.metamodel.jdbc.dialects.ImpalaQueryRewriter;
+import org.apache.metamodel.query.OperatorType;
+import org.apache.metamodel.query.Query;
+import org.apache.metamodel.schema.MutableColumn;
+import org.apache.metamodel.schema.MutableTable;
+import org.easymock.EasyMock;
+
+public class ImpalaQueryRewriterTest extends TestCase {
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+    }
+
+    public void testImpalaQuery() {
+
+        final JdbcDataContext mockContext = EasyMock.createMock(JdbcDataContext.class);
+        EasyMock.expect(mockContext.getDatabaseProductName()).andReturn(DATABASE_PRODUCT_IMPALA).anyTimes();
+        EasyMock.expect(mockContext.getDatabaseVersion()).andReturn("3.0.0").anyTimes();
+        EasyMock.expect(mockContext.getIdentifierQuoteString()).andReturn("quoteString").anyTimes();
+
+        EasyMock.replay(mockContext);
+        ImpalaQueryRewriter qr = new ImpalaQueryRewriter(mockContext);
+
+        MutableColumn col1 = new MutableColumn("kkbh");
+        MutableColumn col2 = new MutableColumn("kkmc");
+        Query q = new Query().from(new MutableTable("5_t_kk_kkxx")).select(col1).select(col2)
+                .where(col1, OperatorType.EQUALS_TO, "5207281832").orderBy(col1).setFirstRow(5).setMaxRows(9);
+        String sql = qr.rewriteQuery(q);
+
+        assertEquals(sql,"SELECT kkbh, kkmc FROM 5_t_kk_kkxx WHERE kkbh = '5207281832' ORDER BY kkbh ASC LIMIT 9 OFFSET 4");
+    }
+}