thomasrebele commented on code in PR #6374:
URL: https://github.com/apache/hive/pull/6374#discussion_r3028690238
##########
ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnStatsAutoGatherContext.java:
##########
@@ -279,38 +289,46 @@ private void replaceSelectOperatorProcess(SelectOperator
operator, Operator<? ex
"Dynamic partition columns should not come before static
partition columns.");
}
exprNodeDesc = new ExprNodeConstantDesc(partSpec.get(partColName));
- TypeInfo srcType = exprNodeDesc.getTypeInfo();
- TypeInfo destType = selRS.getSignature().get(this.columns.size() +
i).getType();
- if (!srcType.equals(destType)) {
- // This may be possible when srcType is string but destType is
integer
- exprNodeDesc = ExprNodeTypeCheck.getExprNodeDefaultExprProcessor()
- .createConversionCast(exprNodeDesc, (PrimitiveTypeInfo)
destType);
- }
+ srcType = exprNodeDesc.getTypeInfo();
}
// 3. dynamic partition columns
else {
dynamicPartBegin++;
ColumnInfo col = columns.get(this.columns.size() + dynamicPartBegin);
- TypeInfo srcType = col.getType();
- TypeInfo destType = selRS.getSignature().get(this.columns.size() +
i).getType();
exprNodeDesc = new ExprNodeColumnDesc(col);
- if (!srcType.equals(destType)) {
- exprNodeDesc = ExprNodeTypeCheck.getExprNodeDefaultExprProcessor()
- .createConversionCast(exprNodeDesc, (PrimitiveTypeInfo)
destType);
- }
+ srcType = col.getType();
+
+ }
+ TypeInfo destType = selRSSig.get(this.columns.size() + i).getType();
+ if (!srcType.equals(destType)) {
+ // This may be possible when srcType is string but destType is integer
+ exprNodeDesc = ExprNodeTypeCheck.getExprNodeDefaultExprProcessor()
+ .createConversionCast(exprNodeDesc, (PrimitiveTypeInfo) destType);
}
colList.add(exprNodeDesc);
String internalName = selRS.getColumnNames().get(this.columns.size() +
i);
columnNames.add(internalName);
columnExprMap.put(internalName, exprNodeDesc);
- signature.add(selRS.getSignature().get(this.columns.size() + i));
+ signature.add(selRSSig.get(this.columns.size() + i));
}
operator.setConf(new SelectDesc(colList, columnNames));
operator.setColumnExprMap(columnExprMap);
selRS.setSignature(signature);
operator.setSchema(selRS);
}
+ private Integer getSelRSColumnIndex(int i, ColumnInfo col, Map<String,
Integer> columnNameToIndex) {
+ ObjectInspector objectInspector = col.getObjectInspector();
+ if (objectInspector == null) {
+ return null;
+ }
+ boolean columnSupported = isColumnSupported(objectInspector.getCategory(),
col::getType);
+ if (!columnSupported) {
+ return null;
+ }
+ return columnNameToIndex.get(this.columns.get(i).getName());
+ }
+
public String getCompleteName() {
return tbl.getFullyQualifiedName();
Review Comment:
I refactored the `replaceSelectOperatorProcess` method a bit to reduce its
complexity (to avoid a Sonar warning).
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]