if (columnPattern != null && !columnPattern.matcher(column.getName()).matches()) { continue; column.getName(), // COLUMN_NAME column.getType().toJavaSQLType(), // DATA_TYPE column.getTypeName(), // TYPE_NAME column.getTypeDescriptor().getColumnSize(), // COLUMN_SIZE column.getTypeDescriptor().getDecimalDigits(), // DECIMAL_DIGITS column.getType().getNumPrecRadix(), // NUM_PREC_RADIX pkColNames.contains(column.getName().toLowerCase()) ? DatabaseMetaData.columnNoNulls column.getComment(), // REMARKS column.getOrdinalPosition(), // ORDINAL_POSITION pkColNames.contains(column.getName().toLowerCase()) ? "NO" : "YES", // IS_NULLABLE
public TableSchema(TTableSchema tTableSchema) { for (TColumnDesc tColumnDesc : tTableSchema.getColumns()) { columns.add(new ColumnDescriptor(tColumnDesc)); } }
public TableSchema addStringColumn(String columnName, String columnComment) { columns.add(ColumnDescriptor.newPrimitiveColumnDescriptor(columnName, columnComment, Type.STRING_TYPE, columns.size() + 1)); return this; } }
@Test public void testGetFunctions() throws Exception { SessionHandle sessionHandle = client.openSession("tom", "password"); assertNotNull(sessionHandle); OperationHandle opHandle = client.getFunctions(sessionHandle, null, null, "*"); TableSchema schema = client.getResultSetMetadata(opHandle); ColumnDescriptor columnDesc = schema.getColumnDescriptorAt(0); assertEquals("FUNCTION_CAT", columnDesc.getName()); assertEquals(Type.STRING_TYPE, columnDesc.getType()); columnDesc = schema.getColumnDescriptorAt(1); assertEquals("FUNCTION_SCHEM", columnDesc.getName()); assertEquals(Type.STRING_TYPE, columnDesc.getType()); columnDesc = schema.getColumnDescriptorAt(2); assertEquals("FUNCTION_NAME", columnDesc.getName()); assertEquals(Type.STRING_TYPE, columnDesc.getType()); columnDesc = schema.getColumnDescriptorAt(3); assertEquals("REMARKS", columnDesc.getName()); assertEquals(Type.STRING_TYPE, columnDesc.getType()); columnDesc = schema.getColumnDescriptorAt(4); assertEquals("FUNCTION_TYPE", columnDesc.getName()); assertEquals(Type.INT_TYPE, columnDesc.getType()); columnDesc = schema.getColumnDescriptorAt(5); assertEquals("SPECIFIC_NAME", columnDesc.getName()); assertEquals(Type.STRING_TYPE, columnDesc.getType()); // Cleanup client.closeOperation(opHandle); client.closeSession(sessionHandle); }
assertTrue(columns.get(0).getName().toLowerCase().equals(expectedCol.toLowerCase()) || columns.get(0).getName().toLowerCase().equals("ID".toLowerCase())); assertEquals(columns.get(0).getTypeName().toLowerCase(), "STRING".toLowerCase());
@Override public void serialize(ColumnDescriptor columnDescriptor, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { jsonGenerator.writeStartObject(); jsonGenerator.writeStringField("name", columnDescriptor.getName()); jsonGenerator.writeStringField("comment", columnDescriptor.getComment()); jsonGenerator.writeNumberField("position", columnDescriptor.getOrdinalPosition()); jsonGenerator.writeStringField("type", columnDescriptor.getType().getName()); jsonGenerator.writeEndObject(); } });
private List<ColumnDesc> getResultSchemaInternal(OperationHandle operationHandle) throws SQLException { ImmutableList.Builder<ColumnDesc> listBuilder = ImmutableList.builder(); if (operationHandle.hasResultSet()) { TableSchema tableSchema = cliService.getResultSetMetadata(operationHandle); for (ColumnDescriptor colDesc : tableSchema.getColumnDescriptors()) { listBuilder.add(new ColumnDesc(colDesc.getName(), colDesc.getTypeName(), colDesc.getOrdinalPosition(), colDesc.getComment())); } } return listBuilder.build(); }
private void assertResultsAreEqual(ESResultSet resultSet1, ESResultSet resultSet2) { final Collection<ColumnDescriptor> columns1 = resultSet1.getMetadata().getColumns(); final Collection<ColumnDescriptor> columns2 = resultSet2.getMetadata().getColumns(); Assert.assertEquals(columns1.size(), columns2.size()); final Iterator<ColumnDescriptor> iterator1 = columns1.iterator(); final Iterator<ColumnDescriptor> iterator2 = columns2.iterator(); while (iterator1.hasNext()) { final ColumnDescriptor column1 = iterator1.next(); final ColumnDescriptor column2 = iterator2.next(); Assert.assertEquals("Column aliases are different! " + column1.getName() + " " + column1.getName(), column1.getName(), column2.getName()); Assert.assertEquals("Column positions are different! " + column1.getName() + " " + column1.getName(), column1.getOrdinalPosition(), column2.getOrdinalPosition()); Assert.assertEquals("Column types are different! " + column1.getName() + " " + column1.getName(), column1.getType(), column2.getType()); } Assert.assertEquals(resultSet1.size(), resultSet2.size()); while (resultSet1.hasNext()) { final ResultRow row1 = resultSet1.next(); final ResultRow row2 = resultSet2.next(); Assert.assertEquals("Row length is different", row1.getValues().size(), row2.getValues().size()); Iterator<Object> values1 = row1.getValues().iterator(); Iterator<Object> values2 = row2.getValues().iterator(); while (values1.hasNext()) { Assert.assertEquals("Values are different", values1.next(), values2.next()); } } }
public ColumnBasedSet(TableSchema schema) { descriptors = schema.toTypeDescriptors(); columns = new ArrayList<ColumnBuffer>(); for (ColumnDescriptor colDesc : schema.getColumnDescriptors()) { columns.add(new ColumnBuffer(colDesc.getType())); } }
/** * Inits the column fields. * * @param metadata the metadata */ private void initColumnFields(LensResultSetMetadata metadata) { StringBuilder typesSb = new StringBuilder(); StringBuilder headerTypes = new StringBuilder(); if ((metadata != null) && (metadata.getColumns() != null) && (!metadata.getColumns().isEmpty())) { for (int pos = 0; pos < metadata.getColumns().size(); pos++) { if (pos != 0) { typesSb.append(","); headerTypes.append(","); } String name = metadata.getColumns().get(pos).getName(); String type = LensResultSetMetadata.getQualifiedTypeName(metadata.getColumns().get(pos).getTypeDescriptor()); typesSb.append(type); columnNames.add(name); escapedColumnNames.add(StringEscapeUtils.escapeCsv(name)); TypeInfo typeInfo = TypeInfoUtils.getTypeInfoFromTypeString(type); columnTypes.add(typeInfo); columnOIs.add(TypeInfoUtils.getStandardJavaObjectInspectorFromTypeInfo(typeInfo)); columnHeaderOIs.add(TypeInfoUtils.getStandardJavaObjectInspectorFromTypeInfo(TypeInfoUtils .getTypeInfoFromTypeString(HEADER_TYPE))); headerTypes.append(HEADER_TYPE); } } types = typesSb.toString(); htypes = headerTypes.toString(); }
protected String getDebugMessage(final String type, final TableSchema resultSetSchema) { StringBuilder debugMessage = new StringBuilder(); debugMessage.append("Returning "); debugMessage.append(type); debugMessage.append(" metadata: "); boolean firstColumn = true; for (ColumnDescriptor column : resultSetSchema.getColumnDescriptors()) { if (!firstColumn) { debugMessage.append(", "); } debugMessage.append(column.getName()); debugMessage.append("={}"); firstColumn = false; } return debugMessage.toString(); } }
@Override public void assertFunctionCall(String functionCallString, Object expectedOutputData, Object expectedOutputType) { String query = "SELECT " + functionCallString; try { // Execute the SQL statement and fetch the result OperationHandle handle = _client.executeStatement(_sessionHandle, query, null); if (handle.hasResultSet()) { RowSet rowSet = _client.fetchResults(handle); if (rowSet.numRows() > 1 || rowSet.numColumns() > 1) { throw new RuntimeException( "Expected 1 row and 1 column in query output. Received " + rowSet.numRows() + " rows and " + rowSet.numColumns() + " columns.\nQuery: \"" + query + "\""); } Object[] row = rowSet.iterator().next(); Object result = row[0]; Assert.assertEquals(result, expectedOutputData, "UDF output does not match"); // Get the output data type and convert them to TypeInfo to compare ColumnDescriptor outputColumnDescriptor = _client.getResultSetMetadata(handle).getColumnDescriptors().get(0); Assert.assertEquals(TypeInfoUtils.getTypeInfoFromTypeString(outputColumnDescriptor.getTypeName().toLowerCase()), TypeInfoUtils.getTypeInfoFromObjectInspector((ObjectInspector) expectedOutputType), "UDF output type does not match"); } else { throw new RuntimeException("Query did not return any rows. Query: \"" + query + "\""); } } catch (HiveSQLException e) { throw new RuntimeException("Error running Hive query: \"" + query + "\"", e); } } }
public TTableSchema toTTableSchema() { TTableSchema tTableSchema = new TTableSchema(); for (ColumnDescriptor col : columns) { tTableSchema.addToColumns(col.toTColumnDesc()); } return tTableSchema; }
public TypeDescriptor[] toTypeDescriptors() { TypeDescriptor[] types = new TypeDescriptor[columns.size()]; for (int i = 0; i < types.length; i++) { types[i] = columns.get(i).getTypeDescriptor(); } return types; }
assertEquals(col1.getTypeName().toLowerCase(), "int"); assertEquals(col1.getName(), "time_key".toUpperCase()); assertEquals(col2.getTypeName().toLowerCase(), "int"); assertEquals(col2.getName(), "day_of_week".toUpperCase()); assertEquals(col3.getTypeName().toLowerCase(), "date"); assertEquals(col3.getName(), "day".toUpperCase()); assertEquals(col4.getTypeName().toLowerCase(), "double"); assertEquals(col4.getName(), "c4".toUpperCase());
@Override public void serialize(ColumnDescriptor columnDescriptor, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { jsonGenerator.writeStartObject(); jsonGenerator.writeStringField("name", columnDescriptor.getName()); jsonGenerator.writeStringField("comment", columnDescriptor.getComment()); jsonGenerator.writeNumberField("position", columnDescriptor.getOrdinalPosition()); jsonGenerator.writeStringField("type", columnDescriptor.getType().getName()); jsonGenerator.writeEndObject(); } });
private List<ColumnDesc> getResultSchemaInternal(OperationHandle operationHandle) throws SQLException { ImmutableList.Builder<ColumnDesc> listBuilder = ImmutableList.builder(); if (operationHandle.hasResultSet()) { TableSchema tableSchema = cliService.getResultSetMetadata(operationHandle); for (ColumnDescriptor colDesc : tableSchema.getColumnDescriptors()) { listBuilder.add(new ColumnDesc(colDesc.getName(), colDesc.getTypeName(), colDesc.getOrdinalPosition(), colDesc.getComment())); } } return listBuilder.build(); }
/** * To query result set metadata. * * @return the query result set metadata */ public QueryResultSetMetadata toQueryResultSetMetadata() { List<ResultColumn> result = new ArrayList<ResultColumn>(); for (ColumnDescriptor col : getColumns()) { result.add(new ResultColumn(col.getName(), col.getType().getName())); } return new QueryResultSetMetadata(result); }
private Object getColumnValue(int columnIndex) throws SQLException { if (row == null) { throw new SQLException("No row found."); } if (row.length == 0) { throw new SQLException("RowSet does not contain any columns!"); } if (columnIndex > row.length) { throw new SQLException("Invalid columnIndex: " + columnIndex); } Type columnType = getSchema().getColumnDescriptorAt(columnIndex - 1).getType(); try { Object evaluated = evaluate(columnType, row[columnIndex - 1]); wasNull = evaluated == null; return evaluated; } catch (Exception e) { e.printStackTrace(); throw new SQLException("Unrecognized column type:" + columnType, e); } }
/** * Inits the column fields. * * @param metadata the metadata */ private void initColumnFields(LensResultSetMetadata metadata) { StringBuilder typesSb = new StringBuilder(); StringBuilder headerTypes = new StringBuilder(); if ((metadata != null) && (metadata.getColumns() != null) && (!metadata.getColumns().isEmpty())) { for (int pos = 0; pos < metadata.getColumns().size(); pos++) { if (pos != 0) { typesSb.append(","); headerTypes.append(","); } String name = metadata.getColumns().get(pos).getName(); String type = LensResultSetMetadata.getQualifiedTypeName(metadata.getColumns().get(pos).getTypeDescriptor()); typesSb.append(type); columnNames.add(name); escapedColumnNames.add(StringEscapeUtils.escapeCsv(name)); TypeInfo typeInfo = TypeInfoUtils.getTypeInfoFromTypeString(type); columnTypes.add(typeInfo); columnOIs.add(TypeInfoUtils.getStandardJavaObjectInspectorFromTypeInfo(typeInfo)); columnHeaderOIs.add(TypeInfoUtils.getStandardJavaObjectInspectorFromTypeInfo(TypeInfoUtils .getTypeInfoFromTypeString(HEADER_TYPE))); headerTypes.append(HEADER_TYPE); } } types = typesSb.toString(); htypes = headerTypes.toString(); }