You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ma...@apache.org on 2016/11/08 22:14:32 UTC

phoenix git commit: PHOENIX-3347 Set conformance level to PhoenixSqlConformance

Repository: phoenix
Updated Branches:
  refs/heads/calcite 75caf0906 -> 3fd7d965d


PHOENIX-3347 Set conformance level to PhoenixSqlConformance


Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/3fd7d965
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/3fd7d965
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/3fd7d965

Branch: refs/heads/calcite
Commit: 3fd7d965dc306389d8d1402f47c6faeb45f8ae03
Parents: 75caf09
Author: maryannxue <ma...@gmail.com>
Authored: Tue Nov 8 14:14:23 2016 -0800
Committer: maryannxue <ma...@gmail.com>
Committed: Tue Nov 8 14:14:23 2016 -0800

----------------------------------------------------------------------
 .../calcite/jdbc/PhoenixCalciteFactory.java     | 175 +++++++++++++++++++
 .../phoenix/calcite/PhoenixSqlConformance.java  |  58 ++++++
 .../jdbc/PhoenixCalciteEmbeddedDriver.java      |   5 -
 3 files changed, 233 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/3fd7d965/phoenix-core/src/main/java/org/apache/calcite/jdbc/PhoenixCalciteFactory.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/calcite/jdbc/PhoenixCalciteFactory.java b/phoenix-core/src/main/java/org/apache/calcite/jdbc/PhoenixCalciteFactory.java
index faab40a..b0040e9 100644
--- a/phoenix-core/src/main/java/org/apache/calcite/jdbc/PhoenixCalciteFactory.java
+++ b/phoenix-core/src/main/java/org/apache/calcite/jdbc/PhoenixCalciteFactory.java
@@ -1,5 +1,6 @@
 package org.apache.calcite.jdbc;
 
+import java.io.File;
 import java.io.InputStream;
 import java.io.Reader;
 import java.sql.NClob;
@@ -28,7 +29,14 @@ import org.apache.calcite.avatica.AvaticaStatement;
 import org.apache.calcite.avatica.Meta;
 import org.apache.calcite.avatica.Meta.Signature;
 import org.apache.calcite.avatica.Meta.StatementHandle;
+import org.apache.calcite.avatica.remote.AvaticaHttpClientFactory;
+import org.apache.calcite.avatica.remote.Service.Factory;
 import org.apache.calcite.avatica.remote.TypedValue;
+import org.apache.calcite.avatica.util.Casing;
+import org.apache.calcite.avatica.util.Quoting;
+import org.apache.calcite.config.CalciteConnectionConfig;
+import org.apache.calcite.config.Lex;
+import org.apache.calcite.config.NullCollation;
 import org.apache.calcite.avatica.QueryState;
 import org.apache.calcite.avatica.UnregisteredDriver;
 import org.apache.calcite.jdbc.CalciteConnectionImpl;
@@ -36,9 +44,12 @@ import org.apache.calcite.jdbc.CalciteFactory;
 import org.apache.calcite.jdbc.Driver;
 import org.apache.calcite.linq4j.Enumerable;
 import org.apache.calcite.linq4j.Ord;
+import org.apache.calcite.model.JsonSchema.Type;
 import org.apache.calcite.schema.SchemaPlus;
+import org.apache.calcite.sql.validate.SqlConformance;
 import org.apache.phoenix.calcite.CalciteUtils;
 import org.apache.phoenix.calcite.PhoenixSchema;
+import org.apache.phoenix.calcite.PhoenixSqlConformance;
 import org.apache.phoenix.exception.SQLExceptionCode;
 import org.apache.phoenix.exception.SQLExceptionInfo;
 import org.apache.phoenix.execute.RuntimeContext;
@@ -121,6 +132,17 @@ public class PhoenixCalciteFactory extends CalciteFactory {
         }
 
         @Override
+        public CalciteConnectionConfig config() {
+            final CalciteConnectionConfig config = super.config();
+            return new DelegateCalciteConnectionConfig(config) {
+                @Override
+                public SqlConformance conformance() {
+                    return PhoenixSqlConformance.INSTANCE;
+                }
+            };
+        }
+
+        @Override
         public CalciteStatement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException {
             try {
                 return super.createStatement(resultSetType, resultSetConcurrency, resultSetHoldability);
@@ -470,4 +492,157 @@ public class PhoenixCalciteFactory extends CalciteFactory {
             super(connection);
         }
     }
+
+    private static class DelegateCalciteConnectionConfig implements CalciteConnectionConfig {
+        private final CalciteConnectionConfig delegate;
+
+        DelegateCalciteConnectionConfig(CalciteConnectionConfig delegate) {
+            this.delegate = delegate;
+        }
+
+        @Override
+        public String authentication() {
+            return delegate.authentication();
+        }
+
+        @Override
+        public String avaticaPassword() {
+            return delegate.avaticaPassword();
+        }
+
+        @Override
+        public String avaticaUser() {
+            return delegate.avaticaUser();
+        }
+
+        @Override
+        public Factory factory() {
+            return delegate.factory();
+        }
+
+        @Override
+        public String httpClientClass() {
+            return delegate.httpClientClass();
+        }
+
+        @Override
+        public AvaticaHttpClientFactory httpClientFactory() {
+            return delegate.httpClientFactory();
+        }
+
+        @Override
+        public File kerberosKeytab() {
+            return delegate.kerberosKeytab();
+        }
+
+        @Override
+        public String kerberosPrincipal() {
+            return delegate.kerberosPrincipal();
+        }
+
+        @Override
+        public String schema() {
+            return delegate.schema();
+        }
+
+        @Override
+        public String serialization() {
+            return delegate.serialization();
+        }
+
+        @Override
+        public String timeZone() {
+            return delegate.timeZone();
+        }
+
+        @Override
+        public String url() {
+            return delegate.url();
+        }
+
+        @Override
+        public boolean autoTemp() {
+            return delegate.autoTemp();
+        }
+
+        @Override
+        public boolean materializationsEnabled() {
+            return delegate.materializationsEnabled();
+        }
+
+        @Override
+        public boolean createMaterializations() {
+            return delegate.createMaterializations();
+        }
+
+        @Override
+        public NullCollation defaultNullCollation() {
+            return delegate.defaultNullCollation();
+        }
+
+        @Override
+        public <T> T fun(Class<T> operatorTableClass, T defaultOperatorTable) {
+            return delegate.fun(operatorTableClass, defaultOperatorTable);
+        }
+
+        @Override
+        public String model() {
+            return delegate.model();
+        }
+
+        @Override
+        public Lex lex() {
+            return delegate.lex();
+        }
+
+        @Override
+        public Quoting quoting() {
+            return delegate.quoting();
+        }
+
+        @Override
+        public Casing unquotedCasing() {
+            return delegate.unquotedCasing();
+        }
+
+        @Override
+        public Casing quotedCasing() {
+            return delegate.quotedCasing();
+        }
+
+        @Override
+        public boolean caseSensitive() {
+            return delegate.caseSensitive();
+        }
+
+        @Override
+        public <T> T schemaFactory(Class<T> schemaFactoryClass, T defaultSchemaFactory) {
+            return delegate.schemaFactory(schemaFactoryClass, defaultSchemaFactory);
+        }
+
+        @Override
+        public Type schemaType() {
+            return delegate.schemaType();
+        }
+
+        @Override
+        public boolean spark() {
+            return delegate.spark();
+        }
+
+        @Override
+        public boolean forceDecorrelate() {
+            return delegate.forceDecorrelate();
+        }
+
+        @Override
+        public <T> T typeSystem(Class<T> typeSystemClass, T defaultTypeSystem) {
+            return delegate.typeSystem(typeSystemClass, defaultTypeSystem);
+        }
+
+        @Override
+        public SqlConformance conformance() {
+            return delegate.conformance();
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/phoenix/blob/3fd7d965/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSqlConformance.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSqlConformance.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSqlConformance.java
new file mode 100644
index 0000000..0e35867
--- /dev/null
+++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSqlConformance.java
@@ -0,0 +1,58 @@
+/*
+ * 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.phoenix.calcite;
+
+import org.apache.calcite.sql.validate.SqlConformance;
+
+public class PhoenixSqlConformance implements SqlConformance {
+
+    public static final PhoenixSqlConformance INSTANCE =
+            new PhoenixSqlConformance();
+
+    private PhoenixSqlConformance() { }
+
+    @Override
+    public boolean isSortByOrdinal() {
+        return true;
+    }
+
+    @Override
+    public boolean isSortByAlias() {
+        return true;
+    }
+
+    @Override
+    public boolean isSortByAliasObscures() {
+        return false;
+    }
+
+    @Override
+    public boolean isFromRequired() {
+        return false;
+    }
+
+    @Override
+    public boolean isBangEqualAllowed() {
+        return true;
+    }
+
+    @Override
+    public boolean isMinusAllowed() {
+        return false;
+    }
+}

http://git-wip-us.apache.org/repos/asf/phoenix/blob/3fd7d965/phoenix-core/src/main/java/org/apache/phoenix/calcite/jdbc/PhoenixCalciteEmbeddedDriver.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/jdbc/PhoenixCalciteEmbeddedDriver.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/jdbc/PhoenixCalciteEmbeddedDriver.java
index b20bcfc..36088ba 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/jdbc/PhoenixCalciteEmbeddedDriver.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/jdbc/PhoenixCalciteEmbeddedDriver.java
@@ -31,7 +31,6 @@ import org.apache.calcite.jdbc.CalcitePrepare;
 import org.apache.calcite.jdbc.Driver;
 import org.apache.calcite.linq4j.function.Function0;
 import org.apache.calcite.schema.SchemaPlus;
-import org.apache.calcite.sql.validate.SqlConformance;
 import org.apache.phoenix.calcite.PhoenixPrepareImpl;
 import org.apache.phoenix.calcite.PhoenixSchema;
 import org.apache.phoenix.calcite.rules.PhoenixConverterRules;
@@ -92,10 +91,6 @@ public abstract class PhoenixCalciteEmbeddedDriver extends Driver implements SQL
                 PhoenixRelDataTypeSystem.class.getName());
         setPropertyIfNotSpecified(
                 info2,
-                CalciteConnectionProperty.CONFORMANCE.camelName(),
-                SqlConformance.ORACLE_10.toString());
-        setPropertyIfNotSpecified(
-                info2,
                 CalciteConnectionProperty.MATERIALIZATIONS_ENABLED.camelName(),
                 Boolean.TRUE.toString());