/** * 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); }
@Override public void writeExternal(ObjectOutput out) throws IOException { out.writeUTF(metadata.toJson()); out.writeObject(finalPath == null ? null : finalPath.toUri()); out.writeObject(numRows); // writeObject and readObject have handling for null objects out.writeObject(fileSize); }
@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { metadata = LensResultSetMetadata.fromJson(in.readUTF()); URI uri = (URI) in.readObject(); finalPath = uri == null ? null : new Path(uri); numRows = (Integer)in.readObject(); fileSize = (Long)in.readObject(); } }
/** * 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(); }
break; return LensResultSetMetadata.getQualifiedTypeName(hiveType);
@Override public QueryResultSetMetadata getResultSetMetadata(LensSessionHandle sessionHandle, QueryHandle queryHandle) throws LensException { try { log.info("GetResultSetMetadata: session:{} query: {}", sessionHandle, queryHandle); acquire(sessionHandle); LensResultSet resultSet = getResultset(queryHandle); if (resultSet != null) { return resultSet.getMetadata().toQueryResultSetMetadata(); } else { throw new NotFoundException("Resultset metadata not found for query: (" + sessionHandle + ", " + queryHandle + ")"); } } finally { release(sessionHandle); } }
/** * 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(); }
break; return LensResultSetMetadata.getQualifiedTypeName(hiveType);
if (partialnMemoryResult.isComplteleyFetched()) { // DO not stream the result if its not completely fetched result.setResult(new InMemoryQueryResult(partialnMemoryResult.getPreFetchedRows())); result.setResultMetadata(partialnMemoryResult.getMetadata().toQueryResultSetMetadata()); result.setStatus(queryCtx.getStatus()); return result; result.setResultMetadata(resultSet.getMetadata().toQueryResultSetMetadata()); result.setResult(resultSet.toQueryResult()); result.setStatus(queryCtx.getStatus());
/** * 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); }
@Override public void writeExternal(ObjectOutput out) throws IOException { out.writeUTF(metadata.toJson()); out.writeObject(finalPath == null ? null : finalPath.toUri()); out.writeObject(numRows); // writeObject and readObject have handling for null objects out.writeObject(fileSize); }
@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { metadata = LensResultSetMetadata.fromJson(in.readUTF()); URI uri = (URI) in.readObject(); finalPath = uri == null ? null : new Path(uri); numRows = (Integer)in.readObject(); fileSize = (Long)in.readObject(); } }
List<ColumnDescriptor> columns = rsMeta.getColumns(); assertNotNull(columns); assertEquals(columns.size(), 1);
/** * Test formatter persistence * * @throws IOException Signals that an I/O exception has occurred. */ @Test public void testFormatterPersistence() throws IOException, ClassNotFoundException { Configuration conf = new Configuration(); setConf(conf); testFormatter(conf, "UTF8", LensConfConstants.RESULT_SET_PARENT_DIR_DEFAULT, ".csv", getMockedResultSet()); // Write formatter to stream ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); try { new ObjectOutputStream(outputStream).writeObject(formatter); } finally { outputStream.close(); } // Create another formatter from the stream ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray()); WrappedFileFormatter newFormatter = createFormatter(); try { newFormatter=(WrappedFileFormatter)new ObjectInputStream(inputStream).readObject(); } finally { inputStream.close(); } Assert.assertEquals(formatter.getFinalOutputPath(), newFormatter.getFinalOutputPath()); Assert.assertEquals(formatter.getFileSize(), newFormatter.getFileSize()); Assert.assertEquals(formatter.getNumRows(), newFormatter.getNumRows()); Assert.assertEquals(formatter.getMetadata().toJson(), newFormatter.getMetadata().toJson()); }
LensPersistentResult(FinishedLensQuery query, Configuration conf, LensConf qconf) throws ClassNotFoundException, IOException { this(QueryHandle.fromString(query.getHandle()), LensResultSetMetadata.fromJson(query.getMetadata()), query.getResult(), query.getRows(), query.getFileSize(), conf, qconf); }
InMemoryResultSet rs = (InMemoryResultSet) resultSet; LensResultSetMetadata rsMeta = rs.getMetadata(); assertEquals(rsMeta.getColumns().size(), 4); ColumnDescriptor col1 = rsMeta.getColumns().get(0); assertEquals(col1.getTypeName().toLowerCase(), "int"); assertEquals(col1.getName(), "time_key".toUpperCase()); ColumnDescriptor col2 = rsMeta.getColumns().get(1); assertEquals(col2.getTypeName().toLowerCase(), "int"); assertEquals(col2.getName(), "day_of_week".toUpperCase()); ColumnDescriptor col3 = rsMeta.getColumns().get(2); assertEquals(col3.getTypeName().toLowerCase(), "date"); assertEquals(col3.getName(), "day".toUpperCase()); ColumnDescriptor col4 = rsMeta.getColumns().get(3); assertEquals(col4.getTypeName().toLowerCase(), "double"); assertEquals(col4.getName(), "c4".toUpperCase());
private void persistQuery(FinishedQuery finished) throws SQLException { FinishedLensQuery finishedQuery = new FinishedLensQuery(finished.getCtx()); if (finished.ctx.getStatus().getStatus() == SUCCESSFUL) { if (finished.ctx.getStatus().isResultSetAvailable()) { try { LensResultSet set = finished.getResultset(); if (set != null && PersistentResultSet.class.isAssignableFrom(set.getClass())) { LensResultSetMetadata metadata = set.getMetadata(); String outputPath = set.getOutputPath(); Long fileSize = ((PersistentResultSet) set).getFileSize(); Integer rows = set.size(); finishedQuery.setResult(outputPath); finishedQuery.setMetadata(metadata.toJson()); finishedQuery.setRows(rows); finishedQuery.setFileSize(fileSize); } } catch (Exception e) { log.error("Couldn't obtain result set info for the query: {}. Going ahead with perstsiting the query", finished.getQueryHandle(), e); } } } lensServerDao.insertFinishedQuery(finishedQuery); log.info("Saved query {} to DB", finishedQuery.getHandle()); } }
InMemoryResultSet rs = (InMemoryResultSet) resultSet; LensResultSetMetadata rsMeta = rs.getMetadata(); assertEquals(rsMeta.getColumns().size(), 4); ColumnDescriptor col1 = rsMeta.getColumns().get(0); assertEquals(col1.getTypeName().toLowerCase(), "int"); assertEquals(col1.getName(), "time_key".toUpperCase()); ColumnDescriptor col2 = rsMeta.getColumns().get(1); assertEquals(col2.getTypeName().toLowerCase(), "int"); assertEquals(col2.getName(), "day_of_week".toUpperCase()); ColumnDescriptor col3 = rsMeta.getColumns().get(2); assertEquals(col3.getTypeName().toLowerCase(), "date"); assertEquals(col3.getName(), "day".toUpperCase()); ColumnDescriptor col4 = rsMeta.getColumns().get(3); assertEquals(col4.getTypeName().toLowerCase(), "double"); assertEquals(col4.getName(), "c4".toUpperCase());
InMemoryResultSet rs = (InMemoryResultSet) resultSet; LensResultSetMetadata rsMeta = rs.getMetadata(); assertEquals(rsMeta.getColumns().size(), 4); ColumnDescriptor col1 = rsMeta.getColumns().get(0); assertEquals(col1.getTypeName().toLowerCase(), "double"); assertEquals(col1.getName(), "C1"); ColumnDescriptor col2 = rsMeta.getColumns().get(1); assertEquals(col2.getTypeName().toLowerCase(), "string"); assertEquals(col2.getName(), "C2"); ColumnDescriptor col3 = rsMeta.getColumns().get(2); assertEquals(col3.getTypeName().toLowerCase(), "string"); assertEquals(col3.getName(), "C3"); ColumnDescriptor col4 = rsMeta.getColumns().get(3); assertEquals(col4.getTypeName().toLowerCase(), "string"); assertEquals(col4.getName(), "C4");
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()); } } }