@Test public void testGroupWithVDB() { String sql = "SELECT e1 FROM example1.pm1.g1"; //$NON-NLS-1$ Query resolvedQuery = (Query) helpResolve(sql); helpCheckFrom(resolvedQuery, new String[] { "pm1.g1" }); //$NON-NLS-1$ assertEquals("Resolved string form was incorrect ", sql, resolvedQuery.toString()); //$NON-NLS-1$ }
@Test public void testAliasedGroupWithVDB() { String sql = "SELECT e1 FROM example1.pm1.g1 AS x"; //$NON-NLS-1$ Query resolvedQuery = (Query) helpResolve(sql); helpCheckFrom(resolvedQuery, new String[] { "pm1.g1" }); //$NON-NLS-1$ assertEquals("Resolved string form was incorrect ", sql, resolvedQuery.toString()); //$NON-NLS-1$ }
@Test public void testDateTimeKeywordLiterals() throws QueryParserException { String sql = "select DATE '1970-01-02', TIME '00:01:02', TIMESTAMP '2001-01-01 02:03:04.1'"; Query actualCommand = (Query)QueryParser.getQueryParser().parseCommand(sql, new ParseInfo()); assertEquals("SELECT {d'1970-01-02'}, {t'00:01:02'}, {ts'2001-01-01 02:03:04.1'}", actualCommand.toString()); }
@Test public void testSubString() throws QueryParserException { Query actualCommand = (Query)QueryParser.getQueryParser().parseCommand("SELECT substring(RTRIM(MED.BATDAT), 4, 4) FROM FCC.MEDMAS AS MED", new ParseInfo()); String actualString = actualCommand.toString(); assertEquals("SELECT substring(RTRIM(MED.BATDAT), 4, 4) FROM FCC.MEDMAS AS MED", actualString); }
@Test public void testTrimExpression() throws QueryParserException { String sql = "select trim(substring(Description, pos1+1))"; Query actualCommand = (Query)QueryParser.getQueryParser().parseCommand(sql, new ParseInfo()); assertEquals("SELECT trim(' ' FROM substring(Description, (pos1 + 1)))", actualCommand.toString()); }
@Test public void testTableAliasString() throws Exception { String sql = "select \"pm1g2\".* from pm1.g1 as \"pm1g2\""; Query query = (Query)helpResolve(sql); UnaryFromClause ufc = (UnaryFromClause)query.getFrom().getClauses().get(0); GroupSymbol gs = ufc.getGroup(); assertEquals("pm1g2", gs.getName()); assertEquals("SELECT pm1g2.* FROM pm1.g1 AS pm1g2", query.toString()); }
@Test public void testElementWithVDB() { String sql = "SELECT example1.pm1.g1.e1 FROM pm1.g1"; //$NON-NLS-1$ Query resolvedQuery = (Query) helpResolve(sql); helpCheckSelect(resolvedQuery, new String[] { "pm1.g1.e1" }); //$NON-NLS-1$ helpCheckElements(resolvedQuery.getSelect(), new String[] { "pm1.g1.e1" }, //$NON-NLS-1$ new String[] { "pm1.g1.e1" } ); //$NON-NLS-1$ assertEquals("Resolved string form was incorrect ", sql, resolvedQuery.toString()); //$NON-NLS-1$ }
@Test public void testSubqueryAliasWithPeriod() throws Exception { String sql = "select \"pm1.g2\".x from (select 1 as x) as \"pm1.g2\""; Query query = (Query)helpResolve(sql); SubqueryFromClause sfc = (SubqueryFromClause)query.getFrom().getClauses().get(0); GroupSymbol gs = sfc.getGroupSymbol(); assertEquals("pm1.g2", gs.getName()); assertNull(gs.getDefinition()); assertEquals("SELECT \"pm1.g2\".x FROM (SELECT 1 AS x) AS \"pm1.g2\"", query.toString()); assertEquals("SELECT \"pm1.g2\".x FROM (SELECT 1 AS x) AS \"pm1.g2\"", query.clone().toString()); assertEquals("[\"pm1.g2\".x]", query.getProjectedSymbols().toString()); }
@Test public void testTableAliasWithMultiplePeriods() throws Exception { String sql = "select \"pm1..g2\".e1 from pm1.g1 as \"pm1..g2\""; Query query = (Query)helpResolve(sql); UnaryFromClause ufc = (UnaryFromClause)query.getFrom().getClauses().get(0); GroupSymbol gs = ufc.getGroup(); assertEquals("pm1..g2", gs.getName()); assertEquals("pm1.g1", gs.getDefinition()); assertEquals("SELECT \"pm1..g2\".e1 FROM pm1.g1 AS \"pm1..g2\"", query.toString()); assertEquals("[\"pm1..g2\".e1]", query.getProjectedSymbols().toString()); }
@Test public void testElementSymbolForms() { String sql = "SELECT pm1.g1.e1, e2, pm1.g1.e3 AS a, e4 AS b FROM pm1.g1"; //$NON-NLS-1$ Query resolvedQuery = (Query) helpResolve(sql); helpCheckFrom(resolvedQuery, new String[] { "pm1.g1" }); //$NON-NLS-1$ helpCheckSelect(resolvedQuery, new String[] { "pm1.g1.e1", "pm1.g1.e2", "a", "b" }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ helpCheckElements(resolvedQuery.getSelect(), new String[] { "pm1.g1.e1", "pm1.g1.e2", "pm1.g1.e3", "pm1.g1.e4" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ new String[] { "pm1.g1.e1", "pm1.g1.e2", "pm1.g1.e3", "pm1.g1.e4" } ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ assertEquals("Resolved string form was incorrect ", sql, resolvedQuery.toString()); //$NON-NLS-1$ }
@Test public void testElementSymbolFormsWithAliasedGroup() { String sql = "SELECT x.e1, e2, x.e3 AS a, e4 AS b FROM pm1.g1 AS x"; //$NON-NLS-1$ Query resolvedQuery = (Query) helpResolve(sql); helpCheckFrom(resolvedQuery, new String[] { "pm1.g1" }); //$NON-NLS-1$ helpCheckSelect(resolvedQuery, new String[] { "x.e1", "x.e2", "a", "b" }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ helpCheckElements(resolvedQuery.getSelect(), new String[] { "x.e1", "x.e2", "x.e3", "x.e4" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ new String[] { "pm1.g1.e1", "pm1.g1.e2", "pm1.g1.e3", "pm1.g1.e4" } ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ assertEquals("Resolved string form was incorrect ", sql, resolvedQuery.toString()); //$NON-NLS-1$ }
@Test public void testUnicode3() { String sql = "SELECT '\u05e0'"; //$NON-NLS-1$ Query query = new Query(); Select select = new Select(); Constant c = new Constant("\u05e0"); //$NON-NLS-1$ select.addSymbol(c); //$NON-NLS-1$ query.setSelect(select); helpTest(sql, query.toString(), query); }
@Test public void testTableAliasWithPeriod() throws Exception { String sql = "select \"pm1.g2\".*, e1, \"pm1.g2\".e2, pm1.g2.e2 from pm1.g1 as \"pm1.g2\""; Query query = (Query)helpResolve(sql); UnaryFromClause ufc = (UnaryFromClause)query.getFrom().getClauses().get(0); GroupSymbol gs = ufc.getGroup(); assertEquals("pm1.g2", gs.getName()); assertEquals("pm1.g1", gs.getDefinition()); assertFalse(gs.isTempTable()); assertEquals("SELECT \"pm1.g2\".*, e1, \"pm1.g2\".e2, \"pm1.g2\".e2 FROM pm1.g1 AS \"pm1.g2\"", query.toString()); assertEquals("[\"pm1.g2\".e1, \"pm1.g2\".e2, \"pm1.g2\".e3, \"pm1.g2\".e4, e1, \"pm1.g2\".e2, \"pm1.g2\".e2]", query.getProjectedSymbols().toString()); }
@Test public void testBinaryStringLiteral() throws QueryParserException { Query actualCommand = (Query)QueryParser.getQueryParser().parseCommand("SELECT x'AABBCC0a'", new ParseInfo()); assertEquals(DataTypeManager.DefaultDataClasses.VARBINARY, actualCommand.getSelect().getSymbol(0).getType()); assertEquals("SELECT X'AABBCC0A'", actualCommand.toString()); }
@Test public void testNestedViewAliasing() throws Exception { String sql = "select e1, e2 from (select y.e1, y.e2 from (select pm1.g1.e1, 1 as e2 from pm1.g1) y) z"; //$NON-NLS-1$ Query command = (Query)QueryParser.getQueryParser().parseCommand(sql); QueryResolver.resolveCommand(command, RealMetadataFactory.example1Cached()); command = (Query) command.clone(); command.acceptVisitor(new AliasGenerator(true)); assertEquals("SELECT v_1.c_0, v_1.c_1 FROM (SELECT v_0.c_0, v_0.c_1 FROM (SELECT g_0.e1 AS c_0, 1 AS c_1 FROM pm1.g1 AS g_0) AS v_0) AS v_1", command.toString()); //$NON-NLS-1$ }
@Test public void testNonAutoConversionOfLiteralIntegerToShort() throws Exception { // parse Query command = (Query) QueryParser.getQueryParser().parseCommand("SELECT intkey FROM bqt1.smalla WHERE shortvalue = 5"); //$NON-NLS-1$ // resolve QueryResolver.resolveCommand(command, RealMetadataFactory.exampleBQTCached()); // Check whether an implicit conversion was added on the correct side CompareCriteria crit = (CompareCriteria) command.getCriteria(); assertEquals(DataTypeManager.DefaultDataClasses.SHORT, crit.getRightExpression().getType()); assertEquals("Sql is incorrect after resolving", "SELECT intkey FROM bqt1.smalla WHERE shortvalue = 5", command.toString()); //$NON-NLS-1$ //$NON-NLS-2$ }
/** * Ensures that views are named with v_ even without metadata */ @Test public void testViewAliasing() throws Exception { String sql = "select y.e1 from (select pm1.g1.e1 from pm1.g1) y"; //$NON-NLS-1$ Query command = (Query)QueryParser.getQueryParser().parseCommand(sql); ((ElementSymbol)command.getSelect().getSymbol(0)).setGroupSymbol(new GroupSymbol("y")); //$NON-NLS-1$ command.acceptVisitor(new AliasGenerator(true)); assertEquals("SELECT v_0.c_0 FROM (SELECT g_0.e1 AS c_0 FROM pm1.g1 AS g_0) AS v_0", command.toString()); //$NON-NLS-1$ }
@Test public void testNonAutoConversionOfLiteralIntegerToShort2() throws Exception { // parse Query command = (Query) QueryParser.getQueryParser().parseCommand("SELECT intkey FROM bqt1.smalla WHERE 5 = shortvalue"); //$NON-NLS-1$ // resolve QueryResolver.resolveCommand(command, RealMetadataFactory.exampleBQTCached()); // Check whether an implicit conversion was added on the correct side CompareCriteria crit = (CompareCriteria) command.getCriteria(); assertEquals(DataTypeManager.DefaultDataClasses.SHORT, crit.getLeftExpression().getType()); assertEquals("Sql is incorrect after resolving", "SELECT intkey FROM bqt1.smalla WHERE 5 = shortvalue", command.toString()); //$NON-NLS-1$ //$NON-NLS-2$ }
@Test public void testUnicode4() { String sql = "SELECT \u05e0 FROM g"; //$NON-NLS-1$ Query query = new Query(); Select select = new Select(); ElementSymbol e = new ElementSymbol("\u05e0"); //$NON-NLS-1$ select.addSymbol(e); From from = new From(); from.addGroup(new GroupSymbol("g")); //$NON-NLS-1$ query.setSelect(select); query.setFrom(from); helpTest(sql, query.toString(), query); }
@Test public void testUnicode2() { String sql = "SELECT * FROM TestDocument.TestDocument WHERE Subject='\u0041\u005a'"; //$NON-NLS-1$ Query query = new Query(); Select select = new Select(); select.addSymbol(new MultipleElementSymbol()); query.setSelect(select); From from = new From(); from.addGroup(new GroupSymbol("TestDocument.TestDocument")); //$NON-NLS-1$ query.setFrom(from); CompareCriteria crit = new CompareCriteria(new ElementSymbol("Subject"), CompareCriteria.EQ, new Constant("AZ")); //$NON-NLS-1$ //$NON-NLS-2$ query.setCriteria(crit); helpTest(sql, query.toString(), query); }