public Map<Integer, Object> getDefaultColumn(String tableName, String columnName, Class<?> javaType) { return getDefaultColumn(tableName, columnName, columnName, javaType); }
private Map<Integer, Object> createColumnMetadata(String label, Expression symbol) throws QueryMetadataException, TeiidComponentException { if(symbol instanceof ElementSymbol) { return createElementMetadata(label, (ElementSymbol) symbol); } symbol = SymbolMap.getExpression(symbol); if (symbol instanceof AggregateSymbol) { return createAggregateMetadata(label, (AggregateSymbol)symbol); } else if (symbol instanceof WindowFunction) { return createAggregateMetadata(label, ((WindowFunction)symbol).getFunction()); } return createTypedMetadata(label, symbol); }
private Map<Integer, Object> createAggregateMetadata(String shortColumnName, AggregateSymbol symbol) throws QueryMetadataException, TeiidComponentException { Type function = symbol.getAggregateFunction(); if(function == Type.MIN || function == Type.MAX){ Expression expression = symbol.getArg(0); if(expression instanceof ElementSymbol) { return createColumnMetadata(shortColumnName, expression); } } return createTypedMetadata(shortColumnName, symbol); }
public MetadataResult getMetadata(long requestID) throws TeiidComponentException, TeiidProcessingException { DQPWorkContext workContext = DQPWorkContext.getWorkContext(); MetaDataProcessor processor = new MetaDataProcessor(this, this.prepPlanCache, workContext.getVdbName(), workContext.getVdbVersion()); return processor.processMessage(workContext.getRequestID(requestID), workContext, null, true); }
if (((Query)originalCommand).getIsXML()) { columnMetadata = new Map[1]; columnMetadata[0] = createXMLColumnMetadata((Query)originalCommand); } else if (((Query)originalCommand).getInto() == null) { columnMetadata = createProjectedSymbolMetadata(originalCommand); columnMetadata = createProjectedSymbolMetadata(originalCommand); columnMetadata = createProjectedSymbolMetadata(originalCommand); break; case Command.TYPE_INSERT: default: if (originalCommand.returnsResultSet()) { columnMetadata = createProjectedSymbolMetadata(originalCommand); for (int i = 0; i < params.size(); i++) { Reference param = params.get(i); paramMetadata[i] = getDefaultColumn(null, paramMap.get(param), param.getType());
@Test public void testMetadataGenerationForAllTypes() throws Exception { Set<String> dataTypes = DataTypeManager.getAllDataTypeNames(); for (String type : dataTypes) { Class<?> typeClass = DataTypeManager.getDataTypeClass(type); MetaDataProcessor processor = new MetaDataProcessor(null, null, "vdb", 1); Map<Integer, Object> columnMetadata = processor.getDefaultColumn("t", "c", typeClass); //$NON-NLS-1$ //$NON-NLS-2$ verifyColumn(columnMetadata, type); } }
public static void updateMetadataAcrossBranches(SetQuery originalCommand, List<Column> columns, QueryMetadataInterface metadata) throws TeiidComponentException { String empty = ""; //$NON-NLS-1$ MetaDataProcessor mdp = new MetaDataProcessor(null, null, empty, empty); mdp.metadata = metadata; mdp.useJDBCDefaultPrecision = false; Map<Integer, Object>[] metadataMaps = mdp.createProjectedSymbolMetadata(originalCommand); for (int i = 0; i < columns.size(); i++) { Column column = columns.get(i); Map<Integer, Object> metadataMap = metadataMaps[i]; Integer val = (Integer)metadataMap.get(ResultsMetadataConstants.PRECISION); if (val != null) { column.setPrecision(val); column.setLength(val); } val = (Integer)metadataMap.get(ResultsMetadataConstants.SCALE); if (val != null) { column.setScale(val); } } }
MetaDataProcessor mdp = new MetaDataProcessor(null, null, empty, empty); mdp.metadata = metadata; mdp.useJDBCDefaultPrecision = false; Map<Integer, Object> metadataMap = mdp.createColumnMetadata(empty, symbol);
symbol = SymbolMap.getExpression(symbol); try { columnMetadata[i] = createColumnMetadata(shortColumnName, symbol); } catch(QueryMetadataException e) { throw new TeiidComponentException(QueryPlugin.Event.TEIID30559, e); Map<Integer, Object>[] leftResult = createProjectedSymbolMetadata(setQuery.getLeftQuery()); for(int i=0; i < leftResult.length; i++) { setCombinedMax(columnMetadata, leftResult, i, ResultsMetadataConstants.PRECISION); setCombinedMax(columnMetadata, leftResult, i, ResultsMetadataConstants.SCALE); Map<Integer, Object>[] rightResult = createProjectedSymbolMetadata(setQuery.getRightQuery()); setCombinedMax(columnMetadata, rightResult, i, ResultsMetadataConstants.PRECISION); setCombinedMax(columnMetadata, rightResult, i, ResultsMetadataConstants.SCALE);
if(originalCommand instanceof Query) { if (((Query)originalCommand).getInto() == null) { columnMetadata = createProjectedSymbolMetadata(originalCommand); columnMetadata = createProjectedSymbolMetadata(originalCommand); columnMetadata = createProjectedSymbolMetadata(originalCommand); break; case Command.TYPE_INSERT: default: if (originalCommand.returnsResultSet()) { columnMetadata = createProjectedSymbolMetadata(originalCommand); for (int i = 0; i < params.size(); i++) { Reference param = params.get(i); paramMetadata[i] = getDefaultColumn(null, paramMap.get(param), param.getType());
int precision = getColumnPrecision(type, elementID); column.put(ResultsMetadataConstants.PRECISION, new Integer(precision)); column.put(ResultsMetadataConstants.DISPLAY_SIZE, getColumnDisplaySize(precision, type, elementID));
private Map<Integer, Object>[] createProjectedSymbolMetadata(Command originalCommand) throws TeiidComponentException { Map<Integer, Object>[] columnMetadata; // Allow command to use temporary metadata TempMetadataStore tempMetadata = originalCommand.getTemporaryMetadata(); if(tempMetadata != null && tempMetadata.getData().size() > 0) { TempMetadataAdapter tempFacade = new TempMetadataAdapter(this.metadata, tempMetadata); this.metadata = tempFacade; } List<Expression> projectedSymbols = originalCommand.getProjectedSymbols(); columnMetadata = new Map[projectedSymbols.size()]; Iterator<Expression> symbolIter = projectedSymbols.iterator(); for(int i=0; symbolIter.hasNext(); i++) { Expression symbol = symbolIter.next(); String shortColumnName = Symbol.getShortName(Symbol.getOutputName(symbol)); if(symbol instanceof AliasSymbol) { symbol = ((AliasSymbol)symbol).getSymbol(); } try { columnMetadata[i] = createColumnMetadata(shortColumnName, symbol); } catch(QueryMetadataException e) { throw new TeiidComponentException(QueryPlugin.Event.TEIID30559, e); } } return columnMetadata; }
public MetadataResult getMetadata(long requestID) throws TeiidComponentException, TeiidProcessingException { DQPWorkContext workContext = DQPWorkContext.getWorkContext(); MetaDataProcessor processor = new MetaDataProcessor(this, this.prepPlanCache, workContext.getVdbName(), workContext.getVdbVersion()); return processor.processMessage(workContext.getRequestID(requestID), workContext, null, true); }
public static void updateMetadataAcrossBranches(SetQuery originalCommand, List<Column> columns, QueryMetadataInterface metadata) throws TeiidComponentException { String empty = ""; //$NON-NLS-1$ MetaDataProcessor mdp = new MetaDataProcessor(null, null, empty, empty); mdp.metadata = metadata; mdp.useJDBCDefaultPrecision = false; Map<Integer, Object>[] metadataMaps = mdp.createProjectedSymbolMetadata(originalCommand); for (int i = 0; i < columns.size(); i++) { Column column = columns.get(i); Map<Integer, Object> metadataMap = metadataMaps[i]; Integer val = (Integer)metadataMap.get(ResultsMetadataConstants.PRECISION); if (val != null) { column.setPrecision(val); column.setLength(val); } val = (Integer)metadataMap.get(ResultsMetadataConstants.SCALE); if (val != null) { column.setScale(val); } } }
MetaDataProcessor mdp = new MetaDataProcessor(null, null, empty, empty); mdp.metadata = metadata; mdp.useJDBCDefaultPrecision = false; Map<Integer, Object> metadataMap = mdp.createColumnMetadata(empty, symbol);
symbol = SymbolMap.getExpression(symbol); try { columnMetadata[i] = createColumnMetadata(shortColumnName, symbol); } catch(QueryMetadataException e) { throw new TeiidComponentException(QueryPlugin.Event.TEIID30559, e); Map<Integer, Object>[] leftResult = createProjectedSymbolMetadata(setQuery.getLeftQuery()); for(int i=0; i < leftResult.length; i++) { setCombinedMax(columnMetadata, leftResult, i, ResultsMetadataConstants.PRECISION); setCombinedMax(columnMetadata, leftResult, i, ResultsMetadataConstants.SCALE); Map<Integer, Object>[] rightResult = createProjectedSymbolMetadata(setQuery.getRightQuery()); setCombinedMax(columnMetadata, rightResult, i, ResultsMetadataConstants.PRECISION); setCombinedMax(columnMetadata, rightResult, i, ResultsMetadataConstants.SCALE);
if(originalCommand instanceof Query) { if (((Query)originalCommand).getInto() == null) { columnMetadata = createProjectedSymbolMetadata(originalCommand); columnMetadata = createProjectedSymbolMetadata(originalCommand); columnMetadata = createProjectedSymbolMetadata(originalCommand); break; case Command.TYPE_INSERT: default: if (originalCommand.returnsResultSet()) { columnMetadata = createProjectedSymbolMetadata(originalCommand); for (int i = 0; i < params.size(); i++) { Reference param = params.get(i); paramMetadata[i] = getDefaultColumn(null, paramMap.get(param), param.getType());
int precision = getColumnPrecision(type, elementID); column.put(ResultsMetadataConstants.PRECISION, new Integer(precision)); column.put(ResultsMetadataConstants.DISPLAY_SIZE, getColumnDisplaySize(precision, type, elementID));
public MetadataResult getMetadata(long requestID) throws TeiidComponentException, TeiidProcessingException { DQPWorkContext workContext = DQPWorkContext.getWorkContext(); MetaDataProcessor processor = new MetaDataProcessor(this, this.prepPlanCache, workContext.getVdbName(), workContext.getVdbVersion()); return processor.processMessage(workContext.getRequestID(requestID), workContext, null, true); }
private Map<Integer, Object> createColumnMetadata(String label, Expression symbol) throws QueryMetadataException, TeiidComponentException { if(symbol instanceof ElementSymbol) { return createElementMetadata(label, (ElementSymbol) symbol); } symbol = SymbolMap.getExpression(symbol); if (symbol instanceof AggregateSymbol) { return createAggregateMetadata(label, (AggregateSymbol)symbol); } else if (symbol instanceof WindowFunction) { return createAggregateMetadata(label, ((WindowFunction)symbol).getFunction()); } return createTypedMetadata(label, symbol); }