MCPcopy Create free account
hub / github.com/apache/orc / checkConversion

Function checkConversion

c++/src/SchemaEvolution.cc:79–135  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

77 };
78
79 ConversionCheckResult checkConversion(const Type& readType, const Type& fileType) {
80 ConversionCheckResult ret = {false, false};
81 if (readType.getKind() == fileType.getKind()) {
82 ret.isValid = true;
83 if (fileType.getKind() == CHAR || fileType.getKind() == VARCHAR) {
84 ret.needConvert = readType.getMaximumLength() != fileType.getMaximumLength();
85 } else if (fileType.getKind() == DECIMAL) {
86 ret.needConvert = readType.getPrecision() != fileType.getPrecision() ||
87 readType.getScale() != fileType.getScale();
88 }
89 } else {
90 switch (fileType.getKind()) {
91 case BOOLEAN:
92 case BYTE:
93 case SHORT:
94 case INT:
95 case LONG:
96 case FLOAT:
97 case DOUBLE: {
98 ret.isValid = ret.needConvert = isNumeric(readType) || isStringVariant(readType) ||
99 isDecimal(readType) || isTimestamp(readType);
100 break;
101 }
102 case DECIMAL: {
103 ret.isValid = ret.needConvert =
104 isNumeric(readType) || isStringVariant(readType) || isTimestamp(readType);
105 break;
106 }
107 case STRING:
108 case CHAR:
109 case VARCHAR: {
110 ret.isValid = ret.needConvert = isStringVariant(readType) || isNumeric(readType) ||
111 isTimestamp(readType) || isDecimal(readType);
112 break;
113 }
114 case TIMESTAMP:
115 case TIMESTAMP_INSTANT:
116 case DATE:
117 case BINARY:
118 case GEOMETRY:
119 case GEOGRAPHY: {
120 // Not support
121 break;
122 }
123 case STRUCT:
124 case LIST:
125 case MAP:
126 case UNION: {
127 ret.isValid = ret.needConvert = false;
128 break;
129 }
130 default:
131 break;
132 }
133 }
134 return ret;
135 }
136

Callers 2

buildConversionMethod · 0.85
needConvertMethod · 0.85

Calls 8

isNumericFunction · 0.85
isStringVariantFunction · 0.85
isDecimalFunction · 0.85
isTimestampFunction · 0.85
getMaximumLengthMethod · 0.80
getKindMethod · 0.65
getPrecisionMethod · 0.45
getScaleMethod · 0.45

Tested by

no test coverage detected