diff --git a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcRecordReader.java b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcRecordReader.java index ce2871c34b..4884405b8d 100644 --- a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcRecordReader.java +++ b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcRecordReader.java @@ -110,6 +110,9 @@ public void close() throws IOException { if (iterator != null) { iterator.close(); } + if (dbAccessor != null) { + dbAccessor = null; + } } @@ -122,15 +125,4 @@ public float getProgress() throws IOException { return split.getLength() > 0 ? pos / (float) split.getLength() : 1.0f; } } - - - public void setDbAccessor(DatabaseAccessor dbAccessor) { - this.dbAccessor = dbAccessor; - } - - - public void setIterator(JdbcRecordIterator iterator) { - this.iterator = iterator; - } - } diff --git a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcSerDe.java b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcSerDe.java index b68340c9c9..87ba68273d 100644 --- a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcSerDe.java +++ b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcSerDe.java @@ -119,6 +119,11 @@ public void initialize(Configuration conf, Properties properties) throws SerDeEx LOGGER.error("Caught exception while initializing the SqlSerDe", e); throw new SerDeException(e); } + + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("JdbcSerDe initialized with\n" + "\t columns: " + Arrays.toString(hiveColumnNames) + "\n\t types: " + Arrays + .toString(hiveColumnTypes)); + } } @Override diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/PlanModifierForASTConv.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/PlanModifierForASTConv.java index d00c5103dc..31619c0314 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/PlanModifierForASTConv.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/PlanModifierForASTConv.java @@ -50,6 +50,7 @@ import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSortLimit; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSemiJoin; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveTableScan; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.jdbc.HiveJdbcConverter; import org.apache.hadoop.hive.ql.optimizer.calcite.rules.HiveRelColumnsAlignment; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory; import org.slf4j.Logger; @@ -117,6 +118,10 @@ private static String getTblAlias(RelNode rel) { DruidQuery dq = (DruidQuery) rel; return ((HiveTableScan) dq.getTableScan()).getTableAlias(); } + if (rel instanceof HiveJdbcConverter) { + HiveJdbcConverter conv = (HiveJdbcConverter) rel; + return conv.getTableScan().getHiveTableScan().getTableAlias(); + } if (rel instanceof Project) { return null; } @@ -156,7 +161,9 @@ private static void convertOpTree(RelNode rel, RelNode parent) { } } } else if (rel instanceof SingleRel) { - if (rel instanceof Filter) { + if (rel instanceof HiveJdbcConverter) { + introduceDerivedTable(rel, parent); + } else if (rel instanceof Filter) { if (!validFilterParent(rel, parent)) { introduceDerivedTable(rel, parent); } diff --git a/ql/src/test/queries/clientpositive/external_jdbc_table2.q b/ql/src/test/queries/clientpositive/external_jdbc_table2.q index 5059b44c52..28a21802fe 100644 --- a/ql/src/test/queries/clientpositive/external_jdbc_table2.q +++ b/ql/src/test/queries/clientpositive/external_jdbc_table2.q @@ -1,5 +1,7 @@ --! qt:dataset:src +-- SORT_QUERY_RESULTS + CREATE TEMPORARY FUNCTION dboutput AS 'org.apache.hadoop.hive.contrib.genericudf.example.GenericUDFDBOutput'; FROM src @@ -117,6 +119,11 @@ SELECT * FROM db1_ext_auth1 JOIN db1_ext_auth2 ON db1_ext_auth1.ikey = db1_ext_a SELECT * FROM db1_ext_auth1 JOIN db1_ext_auth2 ON db1_ext_auth1.ikey = db1_ext_auth2.ikey; +EXPLAIN +SELECT db1_ext_auth1.ikey, b.ikey * 2 FROM db1_ext_auth1 JOIN (SELECT * FROM db1_ext_auth1) b; + +SELECT db1_ext_auth1.ikey, b.ikey * 2 FROM db1_ext_auth1 JOIN (SELECT * FROM db1_ext_auth1) b; + EXPLAIN SELECT * FROM db1_ext_auth1 UNION ALL SELECT * FROM db2_ext_auth2; diff --git a/ql/src/test/results/clientpositive/llap/external_jdbc_table.q.out b/ql/src/test/results/clientpositive/llap/external_jdbc_table.q.out index 8db779c427..2fa37f50f3 100644 --- a/ql/src/test/results/clientpositive/llap/external_jdbc_table.q.out +++ b/ql/src/test/results/clientpositive/llap/external_jdbc_table.q.out @@ -467,12 +467,16 @@ WHERE "ikey" IS NOT NULL hive.sql.query.fieldTypes int,double hive.sql.query.split true Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: ikey (type: int) - sort order: + - Map-reduce partition columns: ikey (type: int) + Select Operator + expressions: ikey (type: int), dkey (type: double) + outputColumnNames: _col0, _col1 Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE - value expressions: dkey (type: double) + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Map-reduce partition columns: _col0 (type: int) + Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: double) Execution mode: vectorized, llap LLAP IO: no inputs Reducer 2 @@ -483,7 +487,7 @@ WHERE "ikey" IS NOT NULL Inner Join 0 to 1 keys: 0 _col0 (type: int) - 1 ikey (type: int) + 1 _col0 (type: int) outputColumnNames: _col1, _col3 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE Select Operator diff --git a/ql/src/test/results/clientpositive/llap/external_jdbc_table2.q.out b/ql/src/test/results/clientpositive/llap/external_jdbc_table2.q.out index 13c049fc75..a1635772e1 100644 --- a/ql/src/test/results/clientpositive/llap/external_jdbc_table2.q.out +++ b/ql/src/test/results/clientpositive/llap/external_jdbc_table2.q.out @@ -231,9 +231,9 @@ POSTHOOK: query: SELECT * FROM db1_ext_auth1 POSTHOOK: type: QUERY POSTHOOK: Input: default@db1_ext_auth1 #### A masked pattern was here #### -20 20 20.0 20.0 -20 -20 -20.0 -20.0 100 -15 65.0 -74.0 +20 20 20.0 20.0 44 53 -455.454 330.76 PREHOOK: query: SELECT * FROM db2_ext_auth2 PREHOOK: type: QUERY @@ -243,9 +243,9 @@ POSTHOOK: query: SELECT * FROM db2_ext_auth2 POSTHOOK: type: QUERY POSTHOOK: Input: default@db2_ext_auth2 #### A masked pattern was here #### -20 20 20.0 20.0 -20 8 9.0 11.0 101 -16 66.0 -75.0 +20 20 20.0 20.0 40 50 -455.4543 330.767 PREHOOK: query: SELECT * FROM db1_ext_auth2 PREHOOK: type: QUERY @@ -255,9 +255,9 @@ POSTHOOK: query: SELECT * FROM db1_ext_auth2 POSTHOOK: type: QUERY POSTHOOK: Input: default@db1_ext_auth2 #### A masked pattern was here #### -20 20 20.0 20.0 -20 8 9.0 11.0 101 -16 66.0 -75.0 +20 20 20.0 20.0 40 50 -455.4543 330.767 PREHOOK: query: EXPLAIN SELECT * FROM db1_ext_auth1 JOIN db2_ext_auth2 ON db1_ext_auth1.ikey = db2_ext_auth2.ikey @@ -295,12 +295,16 @@ WHERE "ikey" IS NOT NULL hive.sql.query.fieldTypes int,bigint,float,double hive.sql.query.split true Statistics: Num rows: 1 Data size: 24 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: ikey (type: int) - sort order: + - Map-reduce partition columns: ikey (type: int) + Select Operator + expressions: ikey (type: int), bkey (type: bigint), fkey (type: float), dkey (type: double) + outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 1 Data size: 24 Basic stats: COMPLETE Column stats: NONE - value expressions: bkey (type: bigint), fkey (type: float), dkey (type: double) + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Map-reduce partition columns: _col0 (type: int) + Statistics: Num rows: 1 Data size: 24 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: bigint), _col2 (type: float), _col3 (type: double) Execution mode: vectorized, llap LLAP IO: no inputs Map 3 @@ -315,12 +319,16 @@ WHERE "ikey" IS NOT NULL hive.sql.query.fieldTypes int,bigint,float,double hive.sql.query.split true Statistics: Num rows: 1 Data size: 24 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: ikey (type: int) - sort order: + - Map-reduce partition columns: ikey (type: int) + Select Operator + expressions: ikey (type: int), bkey (type: bigint), fkey (type: float), dkey (type: double) + outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 1 Data size: 24 Basic stats: COMPLETE Column stats: NONE - value expressions: bkey (type: bigint), fkey (type: float), dkey (type: double) + Reduce Output Operator + key expressions: _col0 (type: int) + sort order: + + Map-reduce partition columns: _col0 (type: int) + Statistics: Num rows: 1 Data size: 24 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: bigint), _col2 (type: float), _col3 (type: double) Execution mode: vectorized, llap LLAP IO: no inputs Reducer 2 @@ -330,8 +338,8 @@ WHERE "ikey" IS NOT NULL condition map: Inner Join 0 to 1 keys: - 0 ikey (type: int) - 1 ikey (type: int) + 0 _col0 (type: int) + 1 _col0 (type: int) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 Statistics: Num rows: 1 Data size: 26 Basic stats: COMPLETE Column stats: NONE File Output Operator @@ -408,8 +416,123 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@db1_ext_auth1 POSTHOOK: Input: default@db1_ext_auth2 #### A masked pattern was here #### -20 20 20.0 20.0 20 20 20.0 20.0 -20 -20 -20.0 -20.0 -20 8 9.0 11.0 +20 20 20.0 20.0 20 20 20.0 20.0 +Warning: Shuffle Join MERGEJOIN[10][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product +PREHOOK: query: EXPLAIN +SELECT db1_ext_auth1.ikey, b.ikey * 2 FROM db1_ext_auth1 JOIN (SELECT * FROM db1_ext_auth1) b +PREHOOK: type: QUERY +PREHOOK: Input: default@db1_ext_auth1 +#### A masked pattern was here #### +POSTHOOK: query: EXPLAIN +SELECT db1_ext_auth1.ikey, b.ikey * 2 FROM db1_ext_auth1 JOIN (SELECT * FROM db1_ext_auth1) b +POSTHOOK: type: QUERY +POSTHOOK: Input: default@db1_ext_auth1 +#### A masked pattern was here #### +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez +#### A masked pattern was here #### + Edges: + Reducer 2 <- Map 1 (XPROD_EDGE), Map 3 (XPROD_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: db1_ext_auth1 + properties: + hive.sql.query SELECT "ikey" +FROM "EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE1" + hive.sql.query.fieldNames ikey + hive.sql.query.fieldTypes int + hive.sql.query.split true + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: ikey (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: int) + Execution mode: vectorized, llap + LLAP IO: no inputs + Map 3 + Map Operator Tree: + TableScan + alias: db1_ext_auth1 + properties: + hive.sql.query SELECT "ikey" * 2 AS "*" +FROM "EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE1" + hive.sql.query.fieldNames * + hive.sql.query.fieldTypes int + hive.sql.query.split true + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: * (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: int) + Execution mode: vectorized, llap + LLAP IO: no inputs + Reducer 2 + Execution mode: llap + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + keys: + 0 + 1 + outputColumnNames: _col0, _col1 + Statistics: Num rows: 1 Data size: 9 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 9 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +Warning: Shuffle Join MERGEJOIN[10][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product +PREHOOK: query: SELECT db1_ext_auth1.ikey, b.ikey * 2 FROM db1_ext_auth1 JOIN (SELECT * FROM db1_ext_auth1) b +PREHOOK: type: QUERY +PREHOOK: Input: default@db1_ext_auth1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT db1_ext_auth1.ikey, b.ikey * 2 FROM db1_ext_auth1 JOIN (SELECT * FROM db1_ext_auth1) b +POSTHOOK: type: QUERY +POSTHOOK: Input: default@db1_ext_auth1 +#### A masked pattern was here #### +-20 -40 +-20 200 +-20 40 +-20 88 +100 -40 +100 200 +100 40 +100 88 +20 -40 +20 200 +20 40 +20 88 +44 -40 +44 200 +44 40 +44 88 PREHOOK: query: EXPLAIN SELECT * FROM db1_ext_auth1 UNION ALL SELECT * FROM db2_ext_auth2 PREHOOK: type: QUERY @@ -490,14 +613,14 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@db1_ext_auth1 POSTHOOK: Input: default@db2_ext_auth2 #### A masked pattern was here #### -20 20 20.0 20.0 -20 -20 -20.0 -20.0 -100 -15 65.0 -74.0 -44 53 -455.454 330.76 -20 20 20.0 20.0 -20 8 9.0 11.0 +100 -15 65.0 -74.0 101 -16 66.0 -75.0 +20 20 20.0 20.0 +20 20 20.0 20.0 40 50 -455.4543 330.767 +44 53 -455.454 330.76 PREHOOK: query: EXPLAIN SELECT * FROM db1_ext_auth1 UNION ALL SELECT * FROM db1_ext_auth2 PREHOOK: type: QUERY @@ -545,14 +668,14 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@db1_ext_auth1 POSTHOOK: Input: default@db1_ext_auth2 #### A masked pattern was here #### -20 20 20.0 20.0 -20 -20 -20.0 -20.0 -100 -15 65.0 -74.0 -44 53 -455.454 330.76 -20 20 20.0 20.0 -20 8 9.0 11.0 +100 -15 65.0 -74.0 101 -16 66.0 -75.0 +20 20 20.0 20.0 +20 20 20.0 20.0 40 50 -455.4543 330.767 +44 53 -455.454 330.76 PREHOOK: query: EXPLAIN SELECT * FROM db1_ext_auth1 UNION ALL SELECT * FROM db1_ext_auth2 PREHOOK: type: QUERY @@ -633,14 +756,14 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@db1_ext_auth1 POSTHOOK: Input: default@db1_ext_auth2 #### A masked pattern was here #### -20 20 20.0 20.0 -20 -20 -20.0 -20.0 -100 -15 65.0 -74.0 -44 53 -455.454 330.76 -20 20 20.0 20.0 -20 8 9.0 11.0 +100 -15 65.0 -74.0 101 -16 66.0 -75.0 +20 20 20.0 20.0 +20 20 20.0 20.0 40 50 -455.4543 330.767 +44 53 -455.454 330.76 PREHOOK: query: DROP TABLE db1_ext_auth1 PREHOOK: type: DROPTABLE PREHOOK: Input: default@db1_ext_auth1 diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/hive_metastoreConstants.java b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/hive_metastoreConstants.java index 2ee81df1dc..b968b283a9 100644 --- a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/hive_metastoreConstants.java +++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/hive_metastoreConstants.java @@ -86,4 +86,8 @@ public static final String TABLE_BUCKETING_VERSION = "bucketing_version"; + public static final String DRUID_CONFIG_PREFIX = "druid."; + + public static final String JDBC_CONFIG_PREFIX = "hive.sql."; + } diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-php/metastore/Types.php b/standalone-metastore/metastore-common/src/gen/thrift/gen-php/metastore/Types.php index bf6dfba0cc..d0e6c95cbf 100644 --- a/standalone-metastore/metastore-common/src/gen/thrift/gen-php/metastore/Types.php +++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-php/metastore/Types.php @@ -34826,6 +34826,8 @@ final class Constant extends \Thrift\Type\TConstant { static protected $TABLE_NO_AUTO_COMPACT; static protected $TABLE_TRANSACTIONAL_PROPERTIES; static protected $TABLE_BUCKETING_VERSION; + static protected $DRUID_CONFIG_PREFIX; + static protected $JDBC_CONFIG_PREFIX; static protected function init_DDL_TIME() { return "transient_lastDdlTime"; @@ -34926,6 +34928,14 @@ final class Constant extends \Thrift\Type\TConstant { static protected function init_TABLE_BUCKETING_VERSION() { return "bucketing_version"; } + + static protected function init_DRUID_CONFIG_PREFIX() { + return "druid."; + } + + static protected function init_JDBC_CONFIG_PREFIX() { + return "hive.sql."; + } } diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-py/hive_metastore/constants.py b/standalone-metastore/metastore-common/src/gen/thrift/gen-py/hive_metastore/constants.py index c27745a607..e243e5ca12 100644 --- a/standalone-metastore/metastore-common/src/gen/thrift/gen-py/hive_metastore/constants.py +++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-py/hive_metastore/constants.py @@ -34,3 +34,5 @@ TABLE_NO_AUTO_COMPACT = "no_auto_compaction" TABLE_TRANSACTIONAL_PROPERTIES = "transactional_properties" TABLE_BUCKETING_VERSION = "bucketing_version" +DRUID_CONFIG_PREFIX = "druid." +JDBC_CONFIG_PREFIX = "hive.sql." diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-rb/hive_metastore_constants.rb b/standalone-metastore/metastore-common/src/gen/thrift/gen-rb/hive_metastore_constants.rb index 9e6cedd43d..b2982dbdf4 100644 --- a/standalone-metastore/metastore-common/src/gen/thrift/gen-rb/hive_metastore_constants.rb +++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-rb/hive_metastore_constants.rb @@ -57,3 +57,7 @@ TABLE_TRANSACTIONAL_PROPERTIES = %q"transactional_properties" TABLE_BUCKETING_VERSION = %q"bucketing_version" +DRUID_CONFIG_PREFIX = %q"druid." + +JDBC_CONFIG_PREFIX = %q"hive.sql." + diff --git a/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/utils/MetaStoreUtils.java b/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/utils/MetaStoreUtils.java index 1d89e12d89..0642b39f58 100644 --- a/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/utils/MetaStoreUtils.java +++ b/standalone-metastore/metastore-common/src/main/java/org/apache/hadoop/hive/metastore/utils/MetaStoreUtils.java @@ -554,10 +554,11 @@ public static Properties getPartSchemaFromTableSchema( for (Map.Entry param : sd.getSerdeInfo().getParameters().entrySet()) { String key = param.getKey(); if (schema.get(key) != null && - (key.equals(cols) || key.equals(colTypes) || key.equals(parts) || - // skip Druid properties which are used in DruidSerde, since they are also updated - // after SerDeInfo properties are copied. - key.startsWith("druid."))) { + ((key.equals(cols) || key.equals(colTypes) || key.equals(parts) || + // Skip Druid and JDBC properties which are used in respective SerDes, + // since they are also updated after SerDeInfo properties are copied. + key.startsWith(org.apache.hadoop.hive.metastore.api.hive_metastoreConstants.DRUID_CONFIG_PREFIX) || + key.startsWith(org.apache.hadoop.hive.metastore.api.hive_metastoreConstants.JDBC_CONFIG_PREFIX)))) { continue; } schema.put(key, (param.getValue() != null) ? param.getValue() : StringUtils.EMPTY); diff --git a/standalone-metastore/metastore-common/src/main/thrift/hive_metastore.thrift b/standalone-metastore/metastore-common/src/main/thrift/hive_metastore.thrift index 48b633e5fa..1676b4c41e 100644 --- a/standalone-metastore/metastore-common/src/main/thrift/hive_metastore.thrift +++ b/standalone-metastore/metastore-common/src/main/thrift/hive_metastore.thrift @@ -2457,4 +2457,6 @@ const string TABLE_IS_TRANSACTIONAL = "transactional", const string TABLE_NO_AUTO_COMPACT = "no_auto_compaction", const string TABLE_TRANSACTIONAL_PROPERTIES = "transactional_properties", const string TABLE_BUCKETING_VERSION = "bucketing_version", +const string DRUID_CONFIG_PREFIX = "druid.", +const string JDBC_CONFIG_PREFIX = "hive.sql.",