diff --git a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java index 9e5fd37..404a6f6 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java @@ -2182,10 +2182,7 @@ public boolean getResults(List res) throws IOException, CommandNeedRetryExceptio * indeed written using ThriftJDBCBinarySerDe, read one row from the output sequence file, * since it is a blob of row batches. */ - if (fetchTask.getWork().isHiveServerQuery() && HiveConf.getBoolVar(conf, - HiveConf.ConfVars.HIVE_SERVER2_THRIFT_RESULTSET_SERIALIZE_IN_TASKS) - && (fetchTask.getTblDesc().getSerdeClassName() - .equalsIgnoreCase(ThriftJDBCBinarySerDe.class.getName()))) { + if (fetchTask.getWork().isUsingThriftJDBCBinarySerDe()) { maxRows = 1; } fetchTask.setMaxRows(maxRows); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java index eeba6cd..54d619c 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java @@ -72,7 +72,6 @@ import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.SubStructObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.primitive.IntObjectInspector; -import org.apache.hadoop.hive.serde2.thrift.ThriftJDBCBinarySerDe; import org.apache.hadoop.hive.shims.HadoopShims.StoragePolicyShim; import org.apache.hadoop.hive.shims.HadoopShims.StoragePolicyValue; import org.apache.hadoop.hive.shims.ShimLoader; @@ -1023,9 +1022,7 @@ public void closeOp(boolean abort) throws HiveException { // If serializer is ThriftJDBCBinarySerDe, then it buffers rows to a certain limit (hive.server2.thrift.resultset.max.fetch.size) // and serializes the whole batch when the buffer is full. The serialize returns null if the buffer is not full // (the size of buffer is kept track of in the ThriftJDBCBinarySerDe). - if (conf.isHiveServerQuery() && HiveConf.getBoolVar(hconf, - HiveConf.ConfVars.HIVE_SERVER2_THRIFT_RESULTSET_SERIALIZE_IN_TASKS) && - serializer.getClass().getName().equalsIgnoreCase(ThriftJDBCBinarySerDe.class.getName())) { + if (conf.isUsingThriftJDBCBinarySerDe()) { try { recordValue = serializer.serialize(null, inputObjInspectors[0]); if ( null != fpaths ) { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 17dfd03..9f5a2fd 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -6974,7 +6974,8 @@ protected Operator genFileSinkPlan(String dest, QB qb, Operator input) dpCtx, dest_path); - fileSinkDesc.setHiveServerQuery(SessionState.get().isHiveServerQuery()); + boolean isHiveServerQuery = SessionState.get().isHiveServerQuery(); + fileSinkDesc.setHiveServerQuery(isHiveServerQuery); // If this is an insert, update, or delete on an ACID table then mark that so the // FileSinkOperator knows how to properly write to it. if (destTableIsAcid) { @@ -7017,6 +7018,15 @@ protected Operator genFileSinkPlan(String dest, QB qb, Operator input) fileSinkDesc.setStaticSpec(dpCtx.getSPPath()); } + if (isHiveServerQuery && + null != table_desc && + table_desc.getSerdeClassName().equalsIgnoreCase(ThriftJDBCBinarySerDe.class.getName()) && + HiveConf.getBoolVar(conf,HiveConf.ConfVars.HIVE_SERVER2_THRIFT_RESULTSET_SERIALIZE_IN_TASKS)) { + fileSinkDesc.setIsUsingThriftJDBCBinarySerDe(true); + } else { + fileSinkDesc.setIsUsingThriftJDBCBinarySerDe(false); + } + Operator output = putOpInsertMap(OperatorFactory.getAndMakeChild( fileSinkDesc, fsRS, input), inputRR); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/TaskCompiler.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/TaskCompiler.java index 97cf585..8ce8ea3 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/TaskCompiler.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/TaskCompiler.java @@ -181,9 +181,18 @@ public void compile(final ParseContext pCtx, final List