|
27 | 27 |
|
28 | 28 | import org.apache.paimon.data.GenericRow; |
29 | 29 | import org.apache.paimon.data.InternalRow; |
| 30 | +import org.apache.paimon.data.columnar.ColumnarArray; |
| 31 | +import org.apache.paimon.types.ArrayType; |
30 | 32 | import org.apache.paimon.types.DataField; |
31 | 33 | import org.apache.paimon.types.DataTypeRoot; |
32 | 34 | import org.apache.paimon.types.DecimalType; |
@@ -107,6 +109,39 @@ public static Object getRowDataSafe(DataField fieldType, InternalRow row, int or |
107 | 109 | return row.getTimestamp(ordinal, timestampType.getPrecision()).toLocalDateTime(); |
108 | 110 | case ARRAY: |
109 | 111 | case MULTISET: |
| 112 | + if (row.getArray(ordinal) instanceof ColumnarArray) { |
| 113 | + ColumnarArray columnarArray = (ColumnarArray) row.getArray(ordinal); |
| 114 | + ArrayType arrayType = (ArrayType) fieldType.type(); |
| 115 | + boolean isString = true; |
| 116 | + switch (arrayType.getElementType().asSQLString().toUpperCase()) { |
| 117 | + case "SHORT": |
| 118 | + case "TINYINT": |
| 119 | + case "INT": |
| 120 | + case "BIGINT": |
| 121 | + case "FLOAT": |
| 122 | + case "DOUBLE": |
| 123 | + case "DECIMAL": |
| 124 | + isString = false; |
| 125 | + break; |
| 126 | + default: |
| 127 | + break; |
| 128 | + } |
| 129 | + StringBuilder columnarArrayStringBuild = new StringBuilder("[ "); |
| 130 | + for (int i = 0; i < columnarArray.size(); i++) { |
| 131 | + if (i > 0) { |
| 132 | + columnarArrayStringBuild.append(", "); |
| 133 | + } |
| 134 | + if (isString) { |
| 135 | + columnarArrayStringBuild.append("\""); |
| 136 | + } |
| 137 | + columnarArrayStringBuild.append(columnarArray.getString(i)); |
| 138 | + if (isString) { |
| 139 | + columnarArrayStringBuild.append("\""); |
| 140 | + } |
| 141 | + } |
| 142 | + columnarArrayStringBuild.append(" ]"); |
| 143 | + return columnarArrayStringBuild.toString(); |
| 144 | + } |
110 | 145 | return row.getArray(ordinal).toString(); |
111 | 146 | case MAP: |
112 | 147 | return row.getMap(ordinal).toString(); |
|
0 commit comments