@Override public List getOutputElements() { return command.getProjectedSymbols(); }
@Override public List getOutputElements() { return command.getProjectedSymbols(); }
/** * @return null if unknown, empty if results are not returned, or the resultset columns */ public List<? extends Expression> getResultSetColumns() { if (returnsResultSet()) { return getProjectedSymbols(); } return Collections.emptyList(); }
/** * @return null if unknown, empty if results are not returned, or the resultset columns */ public List<? extends Expression> getResultSetColumns() { if (returnsResultSet()) { return getProjectedSymbols(); } return Collections.emptyList(); }
/** * @return null if unknown, empty if results are not returned, or the resultset columns */ public List<? extends Expression> getResultSetColumns() { if (returnsResultSet()) { return getProjectedSymbols(); } return Collections.emptyList(); }
protected void validateHasProjectedSymbols(Command obj) { if(obj.getProjectedSymbols().size() == 0) { handleValidationError(QueryPlugin.Util.getString("ERR.015.012.0025"), obj); //$NON-NLS-1$ } }
protected void validateHasProjectedSymbols(Command obj) { if(obj.getProjectedSymbols().size() == 0) { handleValidationError(QueryPlugin.Util.getString("ERR.015.012.0025"), obj); //$NON-NLS-1$ } }
protected void validateHasProjectedSymbols(Command obj) { if(obj.getProjectedSymbols().size() == 0) { handleValidationError(QueryPlugin.Util.getString("ERR.015.012.0025"), obj); //$NON-NLS-1$ } }
private static void determineDependencies(Command command, Column c, int index, LinkedHashSet<AbstractMetadataRecord> columnValues) { if (command instanceof Query || command instanceof StoredProcedure) { Expression ex = command.getProjectedSymbols().get(index); collectDependencies(ex, columnValues); } else if (command instanceof SetQuery) { determineDependencies(((SetQuery)command).getLeftQuery(), c, index, columnValues); determineDependencies(((SetQuery)command).getRightQuery(), c, index, columnValues); } }
private static void determineDependencies(Command command, Column c, int index, LinkedHashSet<AbstractMetadataRecord> columnValues) { if (command instanceof Query) { Expression ex = command.getProjectedSymbols().get(index); collectDependencies(ex, columnValues); } else if (command instanceof SetQuery) { determineDependencies(((SetQuery)command).getLeftQuery(), c, index, columnValues); determineDependencies(((SetQuery)command).getRightQuery(), c, index, columnValues); } }
private static void determineDependencies(Command command, Column c, int index, LinkedHashSet<AbstractMetadataRecord> columnValues) { if (command instanceof Query || command instanceof StoredProcedure) { Expression ex = command.getProjectedSymbols().get(index); collectDependencies(ex, columnValues); } else if (command instanceof SetQuery) { determineDependencies(((SetQuery)command).getLeftQuery(), c, index, columnValues); determineDependencies(((SetQuery)command).getRightQuery(), c, index, columnValues); } }
private void verifyProjectedTypes(Command c, Class[] types) { List projSymbols = c.getProjectedSymbols(); for(int i=0; i<projSymbols.size(); i++) { assertEquals("Found type mismatch at column " + i, types[i], ((Expression) projSymbols.get(i)).getType()); //$NON-NLS-1$ } }
@Test public void testDefect18832() { String sql = "SELECT * from (SELECT null as a, e1 FROM pm1.g1) b"; //$NON-NLS-1$ Command c = helpResolve(sql); List projectedSymbols = c.getProjectedSymbols(); for(int i=0; i< projectedSymbols.size(); i++) { ElementSymbol symbol = (ElementSymbol)projectedSymbols.get(i); assertTrue(!symbol.getType().equals(DataTypeManager.DefaultDataClasses.NULL)); } }
@Test public void testDefect18832_2() { String sql = "SELECT a.*, b.* from (SELECT null as a, e1 FROM pm1.g1) a, (SELECT e1 FROM pm1.g1) b"; //$NON-NLS-1$ Command c = helpResolve(sql); List projectedSymbols = c.getProjectedSymbols(); for(int i=0; i< projectedSymbols.size(); i++) { ElementSymbol symbol = (ElementSymbol)projectedSymbols.get(i); assertTrue(!symbol.getType().equals(DataTypeManager.DefaultDataClasses.NULL)); } }
@Test public void testArrayGetTyping() { String sql = "select array_agg(e1)[1], array_agg(e2)[3] from pm1.g1"; //$NON-NLS-1$ Command command = helpResolve(sql, RealMetadataFactory.example1Cached()); assertEquals(DataTypeManager.DefaultDataClasses.STRING, command.getProjectedSymbols().get(0).getType()); assertEquals(DataTypeManager.DefaultDataClasses.INTEGER, command.getProjectedSymbols().get(1).getType()); }
@Test public void testCaseExpressionThatResolvesToNull() { String sqlBefore = "SELECT CASE 'x' WHEN 'Old Inventory System' THEN NULL WHEN 'New Inventory System' THEN NULL END"; //$NON-NLS-1$ String sqlAfter = "SELECT null"; //$NON-NLS-1$ Command cmd = helpTestRewriteCommand( sqlBefore, sqlAfter ); Expression es = cmd.getProjectedSymbols().get(0); assertEquals( DataTypeManager.DefaultDataClasses.STRING, es.getType() ); }
@Test public void testTextTableAliasWithPeriod() throws Exception { Command command = helpResolve("select \"x.y.z\".*, \"x.y.z\".x from pm1.g1, texttable(e1 COLUMNS x string) \"x.y.z\""); //$NON-NLS-1$ assertEquals(2, command.getProjectedSymbols().size()); assertEquals("SELECT \"x.y.z\".*, \"x.y.z\".x FROM pm1.g1, TEXTTABLE(e1 COLUMNS x string) AS \"x.y.z\"", command.toString()); assertEquals("SELECT \"x.y.z\".*, \"x.y.z\".x FROM pm1.g1, TEXTTABLE(e1 COLUMNS x string) AS \"x.y.z\"", command.clone().toString()); }
@Test public void testMultiDimensionalArrayRewrite() throws Exception { String sql = "select (('a', 'b'),('c','d'))"; //$NON-NLS-1$ QueryResolver.resolveCommand(helpParse(sql), RealMetadataFactory.example1Cached()); Command command = helpResolve(sql, RealMetadataFactory.example1Cached()); assertEquals(String[][].class, command.getProjectedSymbols().get(0).getType()); command = QueryRewriter.rewrite(command, RealMetadataFactory.example1Cached(), null); Expression ex = SymbolMap.getExpression(command.getProjectedSymbols().get(0)); Constant c = (Constant)ex; assertTrue(c.getValue() instanceof ArrayImpl); }
@Test public void testArrayResolvingNull() throws Exception { String sql = "select (null, 'a')"; //$NON-NLS-1$ QueryResolver.resolveCommand(helpParse(sql), RealMetadataFactory.example1Cached()); Command command = helpResolve(sql, RealMetadataFactory.example1Cached()); assertEquals(String[].class, command.getProjectedSymbols().get(0).getType()); sql = "select ((null,), ('a',))"; //$NON-NLS-1$ QueryResolver.resolveCommand(helpParse(sql), RealMetadataFactory.example1Cached()); command = helpResolve(sql, RealMetadataFactory.example1Cached()); assertEquals(String[][].class, command.getProjectedSymbols().get(0).getType()); }
@Test public void testMultiDimensionalGet() throws Exception { String sql = "select -((e2, e2), (e2, e2))[1][1] from pm1.g1"; //$NON-NLS-1$ QueryResolver.resolveCommand(helpParse(sql), RealMetadataFactory.example1Cached()); Command command = helpResolve(sql, RealMetadataFactory.example1Cached()); assertEquals(DataTypeManager.DefaultDataClasses.INTEGER, command.getProjectedSymbols().get(0).getType()); }