/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.query.ui.sqleditor.component; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import org.teiid.core.util.TestUtilities; import org.teiid.designer.core.ModelerCore; import org.teiid.designer.query.IQueryFactory; import org.teiid.designer.query.IQueryParser; import org.teiid.designer.query.IQueryService; import org.teiid.designer.query.sql.lang.IBetweenCriteria; import org.teiid.designer.query.sql.lang.ICompareCriteria; import org.teiid.designer.query.sql.lang.ICompoundCriteria; import org.teiid.designer.query.sql.lang.ICriteria; import org.teiid.designer.query.sql.lang.IDelete; import org.teiid.designer.query.sql.lang.IExpression; import org.teiid.designer.query.sql.lang.IFrom; import org.teiid.designer.query.sql.lang.IFromClause; import org.teiid.designer.query.sql.lang.IGroupBy; import org.teiid.designer.query.sql.lang.IInsert; import org.teiid.designer.query.sql.lang.IIsNullCriteria; import org.teiid.designer.query.sql.lang.IJoinPredicate; import org.teiid.designer.query.sql.lang.IJoinType; import org.teiid.designer.query.sql.lang.ILanguageObject; import org.teiid.designer.query.sql.lang.IMatchCriteria; import org.teiid.designer.query.sql.lang.INotCriteria; import org.teiid.designer.query.sql.lang.IOption; import org.teiid.designer.query.sql.lang.IOrderBy; import org.teiid.designer.query.sql.lang.IQuery; import org.teiid.designer.query.sql.lang.ISPParameter; import org.teiid.designer.query.sql.lang.ISelect; import org.teiid.designer.query.sql.lang.ISetCriteria; import org.teiid.designer.query.sql.lang.ISetQuery; import org.teiid.designer.query.sql.lang.IStoredProcedure; import org.teiid.designer.query.sql.lang.ISubqueryCompareCriteria; import org.teiid.designer.query.sql.lang.ISubqueryFromClause; import org.teiid.designer.query.sql.lang.ISubquerySetCriteria; import org.teiid.designer.query.sql.lang.IUnaryFromClause; import org.teiid.designer.query.sql.proc.IAssignmentStatement; import org.teiid.designer.query.sql.proc.IBlock; import org.teiid.designer.query.sql.proc.ICommandStatement; import org.teiid.designer.query.sql.proc.ICreateProcedureCommand; import org.teiid.designer.query.sql.proc.IDeclareStatement; import org.teiid.designer.query.sql.proc.IRaiseStatement; import org.teiid.designer.query.sql.symbol.IAggregateSymbol; import org.teiid.designer.query.sql.symbol.IAliasSymbol; import org.teiid.designer.query.sql.symbol.IElementSymbol; import org.teiid.designer.query.sql.symbol.IExpressionSymbol; import org.teiid.designer.query.sql.symbol.IFunction; import org.teiid.designer.query.sql.symbol.IGroupSymbol; import org.teiid.designer.query.sql.symbol.IScalarSubquery; import org.teiid.designer.runtime.registry.TeiidRuntimeRegistry; import org.teiid.designer.runtime.version.spi.ITeiidServerVersion; import org.teiid.designer.runtime.version.spi.TeiidServerVersion.Version; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; @SuppressWarnings("javadoc") public class TestDisplayNodeFactory extends TestCase { private static final Version VERSION_7_7_0 = Version.TEIID_7_7; private static final Version VERSIONS_8_3[] = { Version.TEIID_8_0, Version.TEIID_8_1, Version.TEIID_8_2, Version.TEIID_8_3 }; private static final Version VERSIONS_8_4[] = { Version.TEIID_8_4, Version.TEIID_8_5, Version.TEIID_8_6, Version.TEIID_8_7, Version.TEIID_8_8, Version.TEIID_8_9, Version.TEIID_8_10, Version.TEIID_8_11, Version.TEIID_8_12_4, Version.TEIID_8_13_5, Version.TEIID_9_0 }; private IQueryFactory factory; private IQueryParser parser; private Collection<ITeiidServerVersion> serverVersions; private Map<String, Map<ITeiidServerVersion, String>> expectedResults; // ################################## FRAMEWORK ################################ public TestDisplayNodeFactory(String name) throws Exception { super(name); serverVersions = TeiidRuntimeRegistry.getInstance().getSupportedVersions(); expectedResults = new HashMap<String, Map<ITeiidServerVersion,String>>(); initExpectedResults(); } private void addExpectedResult(String testName, Version version, String expectedResult) { Map<ITeiidServerVersion, String> map = expectedResults.get(testName); if (map == null) { map = new HashMap<ITeiidServerVersion, String>(); expectedResults.put(testName, map); } map.put(version.get(), expectedResult); } private void initExpectedResults() { addExpectedResult("testAggregateSymbol1", VERSION_7_7_0, "COUNT('abc')"); //$NON-NLS-1$//$NON-NLS-2$ for (Version version83 : VERSIONS_8_3) { addExpectedResult("testAggregateSymbol1", version83, "abc('abc')"); //$NON-NLS-1$//$NON-NLS-2$ } for (Version version84 : VERSIONS_8_4) { addExpectedResult("testAggregateSymbol1", version84, "abc('abc')"); //$NON-NLS-1$//$NON-NLS-2$ } addExpectedResult("testAggregateSymbol2", VERSION_7_7_0, "COUNT(DISTINCT 'abc')"); //$NON-NLS-1$ //$NON-NLS-2$ for (Version version83 : VERSIONS_8_3) { addExpectedResult("testAggregateSymbol2", version83, "abc(DISTINCT 'abc')"); //$NON-NLS-1$ //$NON-NLS-2$ } for (Version version84 : VERSIONS_8_4) { addExpectedResult("testAggregateSymbol2", version84, "abc(DISTINCT 'abc')"); //$NON-NLS-1$ //$NON-NLS-2$ } addExpectedResult("testAggregateSymbol3", VERSION_7_7_0, "COUNT(*)"); //$NON-NLS-1$ //$NON-NLS-2$ for (Version version83 : VERSIONS_8_3) { addExpectedResult("testAggregateSymbol3", version83, "abc(*)"); //$NON-NLS-1$ //$NON-NLS-2$ } for (Version version84 : VERSIONS_8_4) { addExpectedResult("testAggregateSymbol3", version84, "abc(*)"); //$NON-NLS-1$ //$NON-NLS-2$ } addExpectedResult("testAggregateSymbol4", VERSION_7_7_0, "AVG('abc')"); //$NON-NLS-1$//$NON-NLS-2$ for (Version version83 : VERSIONS_8_3) { addExpectedResult("testAggregateSymbol4", version83, "abc('abc')"); //$NON-NLS-1$//$NON-NLS-2$ } for (Version version84 : VERSIONS_8_4) { addExpectedResult("testAggregateSymbol4", version84, "abc('abc')"); //$NON-NLS-1$//$NON-NLS-2$ } addExpectedResult("testAggregateSymbol5", VERSION_7_7_0, "SUM('abc')"); //$NON-NLS-1$//$NON-NLS-2$ for (Version version83 : VERSIONS_8_3) { addExpectedResult("testAggregateSymbol5", version83, "abc('abc')"); //$NON-NLS-1$//$NON-NLS-2$ } for (Version version84 : VERSIONS_8_4) { addExpectedResult("testAggregateSymbol5", version84, "abc('abc')"); //$NON-NLS-1$//$NON-NLS-2$ } addExpectedResult("testAggregateSymbol6", VERSION_7_7_0, "MIN('abc')"); //$NON-NLS-1$//$NON-NLS-2$ for (Version version83 : VERSIONS_8_3) { addExpectedResult("testAggregateSymbol6", version83, "abc('abc')"); //$NON-NLS-1$//$NON-NLS-2$ } for (Version version84 : VERSIONS_8_4) { addExpectedResult("testAggregateSymbol6", version84, "abc('abc')"); //$NON-NLS-1$//$NON-NLS-2$ } addExpectedResult("testAggregateSymbol7", VERSION_7_7_0, "MAX('abc')"); //$NON-NLS-1$//$NON-NLS-2$ for (Version version83 : VERSIONS_8_3) { addExpectedResult("testAggregateSymbol7", version83, "abc('abc')"); //$NON-NLS-1$//$NON-NLS-2$ } for (Version version84 : VERSIONS_8_4) { addExpectedResult("testAggregateSymbol7", version84, "abc('abc')"); //$NON-NLS-1$//$NON-NLS-2$ } addExpectedResult("testRaiseStatement", VERSION_7_7_0, "ERROR 'My Error';"); //$NON-NLS-1$//$NON-NLS-2$ for (Version version83 : VERSIONS_8_3) { addExpectedResult("testRaiseStatement", version83, "RAISE 'My Error';"); //$NON-NLS-1$//$NON-NLS-2$ } for (Version version84 : VERSIONS_8_4) { if( version84 == Version.TEIID_8_12_4) { addExpectedResult("testRaiseStatement", version84, "RAISE 'My Error';"); //$NON-NLS-1$//$NON-NLS-2$ } else { addExpectedResult("testRaiseStatement", version84, "RAISE 'My Error';"); //$NON-NLS-1$//$NON-NLS-2$ } } addExpectedResult("testRaiseStatementWithExpression", VERSION_7_7_0, "ERROR a;"); //$NON-NLS-1$//$NON-NLS-2$ for (Version version83 : VERSIONS_8_3) { addExpectedResult("testRaiseStatementWithExpression", version83, "RAISE a;"); //$NON-NLS-1$//$NON-NLS-2$ } for (Version version84 : VERSIONS_8_4) { addExpectedResult("testRaiseStatementWithExpression", version84, "RAISE a;"); //$NON-NLS-1$//$NON-NLS-2$ } addExpectedResult("testBlock1", VERSION_7_7_0, "BEGIN\n\tDELETE FROM g;\n\ta = 1;\n\tERROR 'My Error';\nEND"); //$NON-NLS-1$//$NON-NLS-2$ for (Version version83 : VERSIONS_8_3) { addExpectedResult("testBlock1", version83, "BEGIN\n\tDELETE FROM g;\n\ta = 1;\n\tRAISE 'My Error';\nEND"); //$NON-NLS-1$ //$NON-NLS-2$ } for (Version version84 : VERSIONS_8_4) { if( version84 == Version.TEIID_8_12_4) { addExpectedResult("testBlock1", version84, "BEGIN\n\tDELETE FROM g;\n\ta = 1;\n\tRAISE 'My Error';\nEND"); //$NON-NLS-1$ //$NON-NLS-2$ } else { addExpectedResult("testBlock1", version84, "BEGIN\n\tDELETE FROM g;\n\ta = 1;\n\tRAISE 'My Error';\nEND"); //$NON-NLS-1$ //$NON-NLS-2$ } } addExpectedResult("testCreateUpdateProcedure1", VERSION_7_7_0, "CREATE PROCEDURE\nBEGIN\n\tDELETE FROM g;\n\ta = 1;\n\tERROR 'My Error';\nEND"); //$NON-NLS-1$ //$NON-NLS-2$ for (Version version83 : VERSIONS_8_3) { addExpectedResult("testCreateUpdateProcedure1", version83, "CREATE VIRTUAL PROCEDURE\nBEGIN\n\tDELETE FROM g;\n\ta = 1;\n\tRAISE 'My Error';\nEND"); //$NON-NLS-1$ //$NON-NLS-2$ } for (Version version84 : VERSIONS_8_4) { if( version84 == Version.TEIID_8_12_4) { addExpectedResult("testCreateUpdateProcedure1", version84, "BEGIN\n\tDELETE FROM g;\n\ta = 1;\n\tRAISE 'My Error';\nEND"); //$NON-NLS-1$ //$NON-NLS-2$ } else { addExpectedResult("testCreateUpdateProcedure1", version84, "BEGIN\n\tDELETE FROM g;\n\ta = 1;\n\tRAISE 'My Error';\nEND"); //$NON-NLS-1$ //$NON-NLS-2$ } } addExpectedResult("testCreateUpdateProcedure2", VERSION_7_7_0, "CREATE PROCEDURE\nBEGIN\n\tDELETE FROM g;\n\ta = 1;\n\tERROR 'My Error';\nEND"); //$NON-NLS-1$ //$NON-NLS-2$ for (Version version83 : VERSIONS_8_3) { addExpectedResult("testCreateUpdateProcedure2", version83, "CREATE VIRTUAL PROCEDURE\nBEGIN\n\tDELETE FROM g;\n\ta = 1;\n\tRAISE 'My Error';\nEND"); //$NON-NLS-1$ //$NON-NLS-2$ } for (Version version84 : VERSIONS_8_4) { if( version84 == Version.TEIID_8_12_4) { addExpectedResult("testCreateUpdateProcedure2", version84, "BEGIN\n\tDELETE FROM g;\n\ta = 1;\n\tRAISE 'My Error';\nEND"); //$NON-NLS-1$ //$NON-NLS-2$ } else { addExpectedResult("testCreateUpdateProcedure2", version84, "BEGIN\n\tDELETE FROM g;\n\ta = 1;\n\tRAISE 'My Error';\nEND"); //$NON-NLS-1$ //$NON-NLS-2$ } } addExpectedResult("testCreateUpdateProcedure3", VERSION_7_7_0, "CREATE PROCEDURE\nBEGIN\n\tDELETE FROM g;\n\ta = 1;\n\tERROR 'My Error';\nEND"); //$NON-NLS-1$ //$NON-NLS-2$ for (Version version83 : VERSIONS_8_3) { addExpectedResult("testCreateUpdateProcedure3", version83, "CREATE VIRTUAL PROCEDURE\nBEGIN\n\tDELETE FROM g;\n\ta = 1;\n\tRAISE 'My Error';\nEND"); //$NON-NLS-1$ //$NON-NLS-2$ } for (Version version84 : VERSIONS_8_4) { if( version84 == Version.TEIID_8_12_4) { addExpectedResult("testCreateUpdateProcedure3", version84, "BEGIN\n\tDELETE FROM g;\n\ta = 1;\n\tRAISE 'My Error';\nEND"); //$NON-NLS-1$ //$NON-NLS-2$ } else { addExpectedResult("testCreateUpdateProcedure3", version84, "BEGIN\n\tDELETE FROM g;\n\ta = 1;\n\tRAISE 'My Error';\nEND"); //$NON-NLS-1$ //$NON-NLS-2$ } } addExpectedResult("testTrimAliasSymbol", VERSION_7_7_0, "SELECT\n\t\ttrim(' ' FROM X) AS ID\n\tFROM\n\t\tY"); //$NON-NLS-1$ //$NON-NLS-2$ for (Version version83 : VERSIONS_8_3) { addExpectedResult("testTrimAliasSymbol", version83, "SELECT\n\t\ttrim(' ' FROM X) AS ID\n\tFROM\n\t\tY"); //$NON-NLS-1$ //$NON-NLS-2$ } for (Version version84 : VERSIONS_8_4) { addExpectedResult("testTrimAliasSymbol", version84, "SELECT\n\t\ttrim(' ' FROM X) AS ID\n\tFROM\n\t\tY"); //$NON-NLS-1$ //$NON-NLS-2$ } addExpectedResult("testConstantAliasSymbol", VERSION_7_7_0, "SELECT\n\t\t'123' AS ID\n\tFROM\n\t\tX"); //$NON-NLS-1$ //$NON-NLS-2$ for (Version version83 : VERSIONS_8_3) { addExpectedResult("testConstantAliasSymbol", version83, "SELECT\n\t\t'123' AS ID\n\tFROM\n\t\tX"); //$NON-NLS-1$ //$NON-NLS-2$ } for (Version version84 : VERSIONS_8_4) { addExpectedResult("testConstantAliasSymbol", version84, "SELECT\n\t\t'123' AS ID\n\tFROM\n\t\tX"); //$NON-NLS-1$ //$NON-NLS-2$ } addExpectedResult("testConcatWithNull", VERSION_7_7_0, "SELECT\n\t\tconcat('abcd', null) AS ProductName\n\tFROM\n\t\tPRODUCTDATA"); //$NON-NLS-1$ //$NON-NLS-2$ for (Version version83 : VERSIONS_8_3) { addExpectedResult("testConcatWithNull", version83, "SELECT\n\t\tconcat('abcd', null) AS ProductName\n\tFROM\n\t\tPRODUCTDATA"); //$NON-NLS-1$ //$NON-NLS-2$ } for (Version version84 : VERSIONS_8_4) { addExpectedResult("testConcatWithNull", version84, "SELECT\n\t\tconcat('abcd', null) AS ProductName\n\tFROM\n\t\tPRODUCTDATA"); //$NON-NLS-1$ //$NON-NLS-2$ } } private String getExpectedResult(String testName, ITeiidServerVersion version) { Map<ITeiidServerVersion, String> versionResultMap = expectedResults.get(testName); assertNotNull(versionResultMap); for (Map.Entry<ITeiidServerVersion, String> entry : versionResultMap.entrySet()) { if (version.compareTo(entry.getKey())) return entry.getValue(); } fail("Cannot get expected value for version " + version); //$NON-NLS-1$ return null; } @Override protected void setUp() throws Exception { assertNotNull(serverVersions); assertFalse(serverVersions.isEmpty()); } @Override protected void tearDown() throws Exception { factory = null; parser = null; TestUtilities.unregisterTeiidServerManager(); } /** * @param version */ private void setDefaultServerVersion(ITeiidServerVersion version) { TestUtilities.setDefaultServerVersion(version); IQueryService queryService = ModelerCore.getTeiidQueryService(); factory = queryService.createQueryFactory(); parser = queryService.getQueryParser(); } /** * Convert array to list * * @param criteria * @return */ private List<? extends ICriteria> createList(ICriteria ...criteria) { return Arrays.asList(criteria); } private List<? extends IExpression> createList(IExpression ... expressions) { return Arrays.asList(expressions); } // ################################## TEST HELPERS ################################ private void helpTest(ILanguageObject obj, String expectedStr) { DisplayNode displayNode = DisplayNodeFactory.createDisplayNode(null, obj); String actualStr = displayNode.toString(); assertEquals("Expected and actual strings don't match", expectedStr, actualStr); //$NON-NLS-1$ } // ################################## ACTUAL TESTS ################################ public void testBetweenCriteria1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IBetweenCriteria bc = factory.createBetweenCriteria(factory.createElementSymbol("m.g.c1"), //$NON-NLS-1$ factory.createConstant(new Integer(1000)), factory.createConstant(new Integer(2000))); helpTest(bc, "m.g.c1 BETWEEN 1000 AND 2000"); //$NON-NLS-1$ } } public void testBetweenCriteria2() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IBetweenCriteria bc = factory.createBetweenCriteria(factory.createElementSymbol("m.g.c1"), //$NON-NLS-1$ factory.createConstant(new Integer(1000)), factory.createConstant(new Integer(2000))); bc.setNegated(true); helpTest(bc, "m.g.c1 NOT BETWEEN 1000 AND 2000"); //$NON-NLS-1$ } } public void testCompareCriteria1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ICompareCriteria cc = factory.createCompareCriteria(factory.createElementSymbol("m.g.c1"), //$NON-NLS-1$ ICompareCriteria.EQ, factory.createConstant("abc")); //$NON-NLS-1$ helpTest(cc, "m.g.c1 = 'abc'"); //$NON-NLS-1$ } } public void testCompareCriteria2() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ICompareCriteria cc = factory.createCompareCriteria(factory.createElementSymbol("m.g.c1"), //$NON-NLS-1$ ICompareCriteria.NE, factory.createConstant("abc")); //$NON-NLS-1$ helpTest(cc, "m.g.c1 <> 'abc'"); //$NON-NLS-1$ } } public void testCompareCriteria3() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ICompareCriteria cc = factory.createCompareCriteria(factory.createElementSymbol("m.g.c1"), //$NON-NLS-1$ ICompareCriteria.GT, factory.createConstant("abc")); //$NON-NLS-1$ helpTest(cc, "m.g.c1 > 'abc'"); //$NON-NLS-1$ } } public void testCompareCriteria4() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ICompareCriteria cc = factory.createCompareCriteria(factory.createElementSymbol("m.g.c1"), //$NON-NLS-1$ ICompareCriteria.GE, factory.createConstant("abc")); //$NON-NLS-1$ helpTest(cc, "m.g.c1 >= 'abc'"); //$NON-NLS-1$ } } public void testCompareCriteria5() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ICompareCriteria cc = factory.createCompareCriteria(factory.createElementSymbol("m.g.c1"), //$NON-NLS-1$ ICompareCriteria.LT, factory.createConstant("abc")); //$NON-NLS-1$ helpTest(cc, "m.g.c1 < 'abc'"); //$NON-NLS-1$ } } public void testCompareCriteria6() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ICompareCriteria cc = factory.createCompareCriteria(factory.createElementSymbol("m.g.c1"), //$NON-NLS-1$ ICompareCriteria.LE, factory.createConstant("abc")); //$NON-NLS-1$ helpTest(cc, "m.g.c1 <= 'abc'"); //$NON-NLS-1$ } } public void testCompareCriteria7() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ICompareCriteria cc = factory.createCompareCriteria(null, ICompareCriteria.EQ, null); helpTest(cc, "<undefined> = <undefined>"); //$NON-NLS-1$ } } public void testCompoundCriteria1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ICompareCriteria cc = factory.createCompareCriteria(factory.createElementSymbol("m.g.c1"), //$NON-NLS-1$ ICompareCriteria.EQ, factory.createConstant("abc")); //$NON-NLS-1$ ICompoundCriteria comp = factory.createCompoundCriteria(ICompoundCriteria.AND, createList(cc)); helpTest(comp, "m.g.c1 = 'abc'"); //$NON-NLS-1$ } } public void testCompoundCriteria2() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ICompareCriteria cc1 = factory.createCompareCriteria(factory.createElementSymbol("m.g.c1"), //$NON-NLS-1$ ICompareCriteria.EQ, factory.createConstant("abc")); //$NON-NLS-1$ ICompareCriteria cc2 = factory.createCompareCriteria(factory.createElementSymbol("m.g.c2"), //$NON-NLS-1$ ICompareCriteria.EQ, factory.createConstant("abc")); //$NON-NLS-1$ ICompoundCriteria comp = factory.createCompoundCriteria(ICompoundCriteria.AND, createList(cc1, cc2)); helpTest(comp, "(m.g.c1 = 'abc') AND (m.g.c2 = 'abc')"); //$NON-NLS-1$ } } public void testCompoundCriteria3() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ICompareCriteria cc1 = factory.createCompareCriteria(factory.createElementSymbol("m.g.c1"), //$NON-NLS-1$ ICompareCriteria.EQ, factory.createConstant("abc")); //$NON-NLS-1$ ICompareCriteria cc2 = factory.createCompareCriteria(factory.createElementSymbol("m.g.c2"), //$NON-NLS-1$ ICompareCriteria.EQ, factory.createConstant("abc")); //$NON-NLS-1$ ICompareCriteria cc3 = factory.createCompareCriteria(factory.createElementSymbol("m.g.c3"), //$NON-NLS-1$ ICompareCriteria.EQ, factory.createConstant("abc")); //$NON-NLS-1$ ICompoundCriteria comp = factory.createCompoundCriteria(ICompoundCriteria.OR, createList(cc1, cc2, cc3)); helpTest(comp, "(m.g.c1 = 'abc') OR (m.g.c2 = 'abc') OR (m.g.c3 = 'abc')"); //$NON-NLS-1$ } } public void testCompoundCriteria4() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ICompareCriteria cc1 = factory.createCompareCriteria(factory.createElementSymbol("m.g.c1"), //$NON-NLS-1$ ICompareCriteria.EQ, factory.createConstant("abc")); //$NON-NLS-1$ ICompoundCriteria comp = factory.createCompoundCriteria(ICompoundCriteria.OR, createList(cc1, null)); helpTest(comp, "(m.g.c1 = 'abc') OR (<undefined>)"); //$NON-NLS-1$ } } public void testCompoundCriteria5() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ICompareCriteria cc1 = factory.createCompareCriteria(factory.createElementSymbol("m.g.c1"), //$NON-NLS-1$ ICompareCriteria.EQ, factory.createConstant("abc")); //$NON-NLS-1$ ICompoundCriteria comp = factory.createCompoundCriteria(ICompoundCriteria.OR, createList(null, cc1)); helpTest(comp, "(<undefined>) OR (m.g.c1 = 'abc')"); //$NON-NLS-1$ } } public void testCompoundCriteria6() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ICompareCriteria cc1 = factory.createCompareCriteria(factory.createElementSymbol("m.g.c1"), //$NON-NLS-1$ ICompareCriteria.EQ, factory.createConstant("abc")); //$NON-NLS-1$ ICompoundCriteria comp = factory.createCompoundCriteria(ICompoundCriteria.OR, createList(cc1, null)); helpTest(comp, "(m.g.c1 = 'abc') OR (<undefined>)"); //$NON-NLS-1$ } } public void testDelete1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IDelete delete = factory.createDelete(); delete.setGroup(factory.createGroupSymbol("m.g")); //$NON-NLS-1$ helpTest(delete, "DELETE FROM m.g"); //$NON-NLS-1$ } } public void testDelete2() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IDelete delete = factory.createDelete(); delete.setGroup(factory.createGroupSymbol("m.g")); //$NON-NLS-1$ delete.setCriteria(factory.createCompareCriteria(factory.createElementSymbol("m.g.c1"), //$NON-NLS-1$ ICompareCriteria.EQ, factory.createConstant("abc"))); //$NON-NLS-1$ helpTest(delete, "DELETE FROM m.g\nWHERE\n\tm.g.c1 = 'abc'"); //$NON-NLS-1$ } } public void testFrom1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IFrom from = factory.createFrom(); from.addGroup(factory.createGroupSymbol("m.g1")); //$NON-NLS-1$ from.addGroup(factory.createGroupSymbol("m.g2")); //$NON-NLS-1$ helpTest(from, "FROM\n\tm.g1, m.g2"); //$NON-NLS-1$ } } public void testFrom2() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IFrom from = factory.createFrom(); from.addClause(factory.createUnaryFromClause(factory.createGroupSymbol("m.g1"))); //$NON-NLS-1$ from.addClause(factory.createJoinPredicate(factory.createUnaryFromClause(factory.createGroupSymbol("m.g2")), //$NON-NLS-1$ factory.createUnaryFromClause(factory.createGroupSymbol("m.g3")), //$NON-NLS-1$ factory.getJoinType(IJoinType.Types.JOIN_CROSS))); helpTest(from, "FROM\n\tm.g1, m.g2 CROSS JOIN m.g3"); //$NON-NLS-1$ } } public void testGroupBy1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IGroupBy gb = factory.createGroupBy(); gb.addSymbol(factory.createElementSymbol("m.g.e1")); //$NON-NLS-1$ helpTest(gb, "GROUP BY m.g.e1"); //$NON-NLS-1$ } } public void testGroupBy2() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IGroupBy gb = factory.createGroupBy(); gb.addSymbol(factory.createElementSymbol("m.g.e1")); //$NON-NLS-1$ gb.addSymbol(factory.createElementSymbol("m.g.e2")); //$NON-NLS-1$ gb.addSymbol(factory.createElementSymbol("m.g.e3")); //$NON-NLS-1$ helpTest(gb, "GROUP BY m.g.e1, m.g.e2, m.g.e3"); //$NON-NLS-1$ } } public void testInsert1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IInsert insert = factory.createInsert(); insert.setGroup(factory.createGroupSymbol("m.g1")); //$NON-NLS-1$ List vars = new ArrayList(); vars.add(factory.createElementSymbol("e1")); //$NON-NLS-1$ vars.add(factory.createElementSymbol("e2")); //$NON-NLS-1$ insert.setVariables(vars); List values = new ArrayList(); values.add(factory.createConstant(new Integer(5))); values.add(factory.createConstant("abc")); //$NON-NLS-1$ insert.setValues(values); helpTest(insert, "INSERT INTO m.g1\n\t\t(e1, e2)\n\tVALUES\n\t\t(5, 'abc')"); //$NON-NLS-1$ } } public void testIsNullCriteria1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IIsNullCriteria inc = factory.createIsNullCriteria(); inc.setExpression(factory.createConstant("abc")); //$NON-NLS-1$ helpTest(inc, "'abc' IS NULL"); //$NON-NLS-1$ } } public void testIsNullCriteria2() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IIsNullCriteria inc = factory.createIsNullCriteria(); inc.setExpression(factory.createElementSymbol("m.g.e1")); //$NON-NLS-1$ helpTest(inc, "m.g.e1 IS NULL"); //$NON-NLS-1$ } } public void testIsNullCriteria3() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IIsNullCriteria inc = factory.createIsNullCriteria(); helpTest(inc, "<undefined> IS NULL"); //$NON-NLS-1$ } } public void testIsNullCriteria4() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IIsNullCriteria inc = factory.createIsNullCriteria(); inc.setExpression(factory.createElementSymbol("m.g.e1")); //$NON-NLS-1$ inc.setNegated(true); helpTest(inc, "m.g.e1 IS NOT NULL"); //$NON-NLS-1$ } } public void testJoinPredicate1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IJoinPredicate jp = factory.createJoinPredicate(factory.createUnaryFromClause(factory.createGroupSymbol("m.g2")), //$NON-NLS-1$ factory.createUnaryFromClause(factory.createGroupSymbol("m.g3")), //$NON-NLS-1$ factory.getJoinType(IJoinType.Types.JOIN_CROSS)); helpTest(jp, "m.g2 CROSS JOIN m.g3"); //$NON-NLS-1$ } } public void testOptionalJoinPredicate1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IJoinPredicate jp = factory.createJoinPredicate(factory.createUnaryFromClause(factory.createGroupSymbol("m.g2")), //$NON-NLS-1$ factory.createUnaryFromClause(factory.createGroupSymbol("m.g3")), //$NON-NLS-1$ factory.getJoinType(IJoinType.Types.JOIN_CROSS)); jp.setOptional(true); helpTest(jp, "/*+ optional */ (m.g2 CROSS JOIN m.g3)"); //$NON-NLS-1$ } } public void testJoinPredicate2() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ArrayList<ICriteria> crits = new ArrayList<ICriteria>(); crits.add(factory.createCompareCriteria(factory.createElementSymbol("m.g2.e1"), ICompareCriteria.EQ, factory.createElementSymbol("m.g3.e1"))); //$NON-NLS-1$ //$NON-NLS-2$ IJoinPredicate jp = factory.createJoinPredicate(factory.createUnaryFromClause(factory.createGroupSymbol("m.g2")), //$NON-NLS-1$ factory.createUnaryFromClause(factory.createGroupSymbol("m.g3")), //$NON-NLS-1$ factory.getJoinType(IJoinType.Types.JOIN_INNER), crits); helpTest(jp, "m.g2 INNER JOIN m.g3 ON m.g2.e1 = m.g3.e1"); //$NON-NLS-1$ } } public void testJoinPredicate3() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ArrayList<ICriteria> crits = new ArrayList<ICriteria>(); crits.add(factory.createCompareCriteria(factory.createElementSymbol("m.g2.e1"), ICompareCriteria.EQ, factory.createElementSymbol("m.g3.e1"))); //$NON-NLS-1$ //$NON-NLS-2$ crits.add(factory.createCompareCriteria(factory.createElementSymbol("m.g2.e2"), ICompareCriteria.EQ, factory.createElementSymbol("m.g3.e2"))); //$NON-NLS-1$ //$NON-NLS-2$ IJoinPredicate jp = factory.createJoinPredicate(factory.createUnaryFromClause(factory.createGroupSymbol("m.g2")), //$NON-NLS-1$ factory.createUnaryFromClause(factory.createGroupSymbol("m.g3")), //$NON-NLS-1$ factory.getJoinType(IJoinType.Types.JOIN_INNER), crits); helpTest(jp, "m.g2 INNER JOIN m.g3 ON m.g2.e1 = m.g3.e1 AND m.g2.e2 = m.g3.e2"); //$NON-NLS-1$ } } public void testJoinPredicate4() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ArrayList<ICriteria> crits = new ArrayList<ICriteria>(); crits.add(factory.createCompareCriteria(factory.createElementSymbol("m.g2.e1"), ICompareCriteria.EQ, factory.createElementSymbol("m.g3.e1"))); //$NON-NLS-1$ //$NON-NLS-2$ IJoinPredicate jp = factory.createJoinPredicate(factory.createUnaryFromClause(factory.createGroupSymbol("m.g2")), //$NON-NLS-1$ factory.createUnaryFromClause(factory.createGroupSymbol("m.g3")), //$NON-NLS-1$ factory.getJoinType(IJoinType.Types.JOIN_INNER), crits); IJoinPredicate jp2 = factory.createJoinPredicate(jp, factory.createUnaryFromClause(factory.createGroupSymbol("m.g1")), //$NON-NLS-1$ factory.getJoinType(IJoinType.Types.JOIN_CROSS)); helpTest(jp2, "(m.g2 INNER JOIN m.g3 ON m.g2.e1 = m.g3.e1) CROSS JOIN m.g1"); //$NON-NLS-1$ } } public void testJoinPredicate5() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ArrayList<ICriteria> crits = new ArrayList<ICriteria>(); crits.add(factory.createNotCriteria(factory.createCompareCriteria(factory.createElementSymbol("m.g2.e1"), ICompareCriteria.EQ, factory.createElementSymbol("m.g3.e1")))); //$NON-NLS-1$ //$NON-NLS-2$ IJoinPredicate jp = factory.createJoinPredicate(factory.createUnaryFromClause(factory.createGroupSymbol("m.g2")), //$NON-NLS-1$ factory.createUnaryFromClause(factory.createGroupSymbol("m.g3")), //$NON-NLS-1$ factory.getJoinType(IJoinType.Types.JOIN_INNER), crits); helpTest(jp, "m.g2 INNER JOIN m.g3 ON NOT (m.g2.e1 = m.g3.e1)"); //$NON-NLS-1$ } } public void testJoinPredicate6() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ICompareCriteria comprCrit1 = factory.createCompareCriteria(factory.createElementSymbol("m.g2.e1"), ICompareCriteria.EQ, factory.createElementSymbol("m.g3.e1")); //$NON-NLS-1$ //$NON-NLS-2$ ICompareCriteria comprCrit2 = factory.createCompareCriteria(factory.createElementSymbol("m.g2.e2"), ICompareCriteria.EQ, factory.createElementSymbol("m.g3.e2")); //$NON-NLS-1$ //$NON-NLS-2$ IIsNullCriteria inc = factory.createIsNullCriteria(); inc.setExpression(factory.createElementSymbol("m.g.e1")); //$NON-NLS-1$ ICompoundCriteria compCrit = factory.createCompoundCriteria(ICompoundCriteria.OR, createList(inc, comprCrit2)); ArrayList crits2 = new ArrayList(); crits2.add(comprCrit1); crits2.add(compCrit); IJoinPredicate jp = factory.createJoinPredicate(factory.createUnaryFromClause(factory.createGroupSymbol("m.g2")), //$NON-NLS-1$ factory.createUnaryFromClause(factory.createGroupSymbol("m.g3")), //$NON-NLS-1$ factory.getJoinType(IJoinType.Types.JOIN_LEFT_OUTER), crits2); helpTest(jp, "m.g2 LEFT OUTER JOIN m.g3 ON m.g2.e1 = m.g3.e1 AND ((m.g.e1 IS NULL) OR (m.g2.e2 = m.g3.e2))"); //$NON-NLS-1$ } } public void testMatchCriteria1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IMatchCriteria mc = factory.createMatchCriteria(); mc.setLeftExpression(factory.createElementSymbol("m.g.e1")); //$NON-NLS-1$ mc.setRightExpression(factory.createConstant("abc")); //$NON-NLS-1$ helpTest(mc, "m.g.e1 LIKE 'abc'"); //$NON-NLS-1$ } } public void testMatchCriteria2() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IMatchCriteria mc = factory.createMatchCriteria(); mc.setLeftExpression(factory.createElementSymbol("m.g.e1")); //$NON-NLS-1$ mc.setRightExpression(factory.createConstant("%")); //$NON-NLS-1$ mc.setEscapeChar('#'); helpTest(mc, "m.g.e1 LIKE '%' ESCAPE '#'"); //$NON-NLS-1$ } } public void testMatchCriteria3() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IMatchCriteria mc = factory.createMatchCriteria(); mc.setLeftExpression(factory.createElementSymbol("m.g.e1")); //$NON-NLS-1$ mc.setRightExpression(factory.createConstant("abc")); //$NON-NLS-1$ mc.setNegated(true); helpTest(mc, "m.g.e1 NOT LIKE 'abc'"); //$NON-NLS-1$ } } public void testINotCriteria1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); INotCriteria not = factory.createNotCriteria(factory.createIsNullCriteria(factory.createElementSymbol("m.g.e1"))); //$NON-NLS-1$ helpTest(not, "NOT (m.g.e1 IS NULL)"); //$NON-NLS-1$ } } public void testINotCriteria2() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); INotCriteria not = factory.createNotCriteria(); helpTest(not, "NOT (<undefined>)"); //$NON-NLS-1$ } } public void testOption1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IOption option = factory.createOption(); helpTest(option, "OPTION"); //$NON-NLS-1$ } } public void testOrderBy1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IOrderBy ob = factory.createOrderBy(); ob.addVariable(factory.createElementSymbol("e1")); //$NON-NLS-1$ helpTest(ob, "ORDER BY e1"); //$NON-NLS-1$ } } public void testOrderBy2() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IOrderBy ob = factory.createOrderBy(); ob.addVariable(factory.createElementSymbol("e1")); //$NON-NLS-1$ ob.addVariable(factory.createAliasSymbol("x", factory.createElementSymbol("e2"))); //$NON-NLS-1$ //$NON-NLS-2$ helpTest(ob, "ORDER BY e1, x"); //$NON-NLS-1$ } } public void testOrderBy3() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IOrderBy ob = factory.createOrderBy(); ob.addVariable(factory.createElementSymbol("e1"), IOrderBy.DESC); //$NON-NLS-1$ ob.addVariable(factory.createElementSymbol("x"), IOrderBy.DESC); //$NON-NLS-1$ helpTest(ob, "ORDER BY e1 DESC, x DESC"); //$NON-NLS-1$ } } public void testQuery1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ISelect select = factory.createSelect(); select.addSymbol(factory.createMultipleElementSymbol()); IFrom from = factory.createFrom(); from.addGroup(factory.createGroupSymbol("m.g")); //$NON-NLS-1$ IQuery query = factory.createQuery(); query.setSelect(select); query.setFrom(from); helpTest(query, "SELECT\n\t\t*\n\tFROM\n\t\tm.g"); //$NON-NLS-1$ } } public void testQuery2() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ISelect select = factory.createSelect(); select.addSymbol(factory.createMultipleElementSymbol()); IFrom from = factory.createFrom(); from.addGroup(factory.createGroupSymbol("m.g")); //$NON-NLS-1$ ICompareCriteria cc = factory.createCompareCriteria(factory.createElementSymbol("e1"), ICompareCriteria.EQ, factory.createConstant(new Integer(5))); //$NON-NLS-1$ IGroupBy groupBy = factory.createGroupBy(); groupBy.addSymbol(factory.createElementSymbol("e1")); //$NON-NLS-1$ ICompareCriteria having = factory.createCompareCriteria(factory.createElementSymbol("e1"), ICompareCriteria.GT, factory.createConstant(new Integer(0))); //$NON-NLS-1$ IOrderBy orderBy = factory.createOrderBy(); orderBy.addVariable(factory.createElementSymbol("e1")); //$NON-NLS-1$ IQuery query = factory.createQuery(); query.setSelect(select); query.setFrom(from); query.setCriteria(cc); query.setGroupBy(groupBy); query.setHaving(having); query.setOrderBy(orderBy); helpTest(query, "SELECT\n\t\t*\n\tFROM\n\t\tm.g\n\tWHERE\n\t\te1 = 5\n\tGROUP BY e1\n\tHAVING\n\t\te1 > 0\n\tORDER BY e1"); //$NON-NLS-1$ } } public void testQuery3() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ISelect select = factory.createSelect(); select.addSymbol(factory.createMultipleElementSymbol()); IFrom from = factory.createFrom(); from.addGroup(factory.createGroupSymbol("m.g")); //$NON-NLS-1$ IGroupBy groupBy = factory.createGroupBy(); groupBy.addSymbol(factory.createElementSymbol("e1")); //$NON-NLS-1$ ICompareCriteria having = factory.createCompareCriteria(factory.createElementSymbol("e1"), ICompareCriteria.GT, factory.createConstant(new Integer(0))); //$NON-NLS-1$ IOrderBy orderBy = factory.createOrderBy(); orderBy.addVariable(factory.createElementSymbol("e1")); //$NON-NLS-1$ IQuery query = factory.createQuery(); query.setSelect(select); query.setFrom(from); query.setGroupBy(groupBy); query.setHaving(having); query.setOrderBy(orderBy); helpTest(query, "SELECT\n\t\t*\n\tFROM\n\t\tm.g\n\tGROUP BY e1\n\tHAVING\n\t\te1 > 0\n\tORDER BY e1"); //$NON-NLS-1$ } } public void testQuery4() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ISelect select = factory.createSelect(); select.addSymbol(factory.createMultipleElementSymbol()); IFrom from = factory.createFrom(); from.addGroup(factory.createGroupSymbol("m.g")); //$NON-NLS-1$ ICompareCriteria cc = factory.createCompareCriteria(factory.createElementSymbol("e1"), ICompareCriteria.EQ, factory.createConstant(new Integer(5))); //$NON-NLS-1$ ICompareCriteria having = factory.createCompareCriteria(factory.createElementSymbol("e1"), ICompareCriteria.GT, factory.createConstant(new Integer(0))); //$NON-NLS-1$ IOrderBy orderBy = factory.createOrderBy(); orderBy.addVariable(factory.createElementSymbol("e1")); //$NON-NLS-1$ IQuery query = factory.createQuery(); query.setSelect(select); query.setFrom(from); query.setCriteria(cc); query.setHaving(having); query.setOrderBy(orderBy); helpTest(query, "SELECT\n\t\t*\n\tFROM\n\t\tm.g\n\tWHERE\n\t\te1 = 5\n\tHAVING\n\t\te1 > 0\n\tORDER BY e1"); //$NON-NLS-1$ } } public void testQuery5() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ISelect select = factory.createSelect(); select.addSymbol(factory.createMultipleElementSymbol()); IFrom from = factory.createFrom(); from.addGroup(factory.createGroupSymbol("m.g")); //$NON-NLS-1$ ICompareCriteria cc = factory.createCompareCriteria(factory.createElementSymbol("e1"), ICompareCriteria.EQ, factory.createConstant(new Integer(5))); //$NON-NLS-1$ IGroupBy groupBy = factory.createGroupBy(); groupBy.addSymbol(factory.createElementSymbol("e1")); //$NON-NLS-1$ IOrderBy orderBy = factory.createOrderBy(); orderBy.addVariable(factory.createElementSymbol("e1")); //$NON-NLS-1$ IQuery query = factory.createQuery(); query.setSelect(select); query.setFrom(from); query.setCriteria(cc); query.setGroupBy(groupBy); query.setOrderBy(orderBy); helpTest(query, "SELECT\n\t\t*\n\tFROM\n\t\tm.g\n\tWHERE\n\t\te1 = 5\n\tGROUP BY e1\n\tORDER BY e1"); //$NON-NLS-1$ } } public void testQuery6() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ISelect select = factory.createSelect(); select.addSymbol(factory.createMultipleElementSymbol()); IFrom from = factory.createFrom(); from.addGroup(factory.createGroupSymbol("m.g")); //$NON-NLS-1$ ICompareCriteria cc = factory.createCompareCriteria(factory.createElementSymbol("e1"), ICompareCriteria.EQ, factory.createConstant(new Integer(5))); //$NON-NLS-1$ IGroupBy groupBy = factory.createGroupBy(); groupBy.addSymbol(factory.createElementSymbol("e1")); //$NON-NLS-1$ ICompareCriteria having = factory.createCompareCriteria(factory.createElementSymbol("e1"), ICompareCriteria.GT, factory.createConstant(new Integer(0))); //$NON-NLS-1$ IQuery query = factory.createQuery(); query.setSelect(select); query.setFrom(from); query.setCriteria(cc); query.setGroupBy(groupBy); query.setHaving(having); helpTest(query, "SELECT\n\t\t*\n\tFROM\n\t\tm.g\n\tWHERE\n\t\te1 = 5\n\tGROUP BY e1\n\tHAVING\n\t\te1 > 0"); //$NON-NLS-1$ } } public void testQuery7() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ISelect select = factory.createSelect(); select.addSymbol(factory.createMultipleElementSymbol()); IFrom from = factory.createFrom(); from.addGroup(factory.createGroupSymbol("m.g")); //$NON-NLS-1$ ICompareCriteria cc = factory.createCompareCriteria(factory.createElementSymbol("e1"), ICompareCriteria.EQ, factory.createConstant(new Integer(5))); //$NON-NLS-1$ IGroupBy groupBy = factory.createGroupBy(); groupBy.addSymbol(factory.createElementSymbol("e1")); //$NON-NLS-1$ ICompareCriteria having = factory.createCompareCriteria(factory.createElementSymbol("e1"), ICompareCriteria.GT, factory.createConstant(new Integer(0))); //$NON-NLS-1$ IOrderBy orderBy = factory.createOrderBy(); orderBy.addVariable(factory.createElementSymbol("e1")); //$NON-NLS-1$ IQuery query = factory.createQuery(); query.setSelect(select); query.setFrom(from); query.setCriteria(cc); query.setGroupBy(groupBy); query.setHaving(having); query.setOrderBy(orderBy); helpTest(query, "SELECT\n\t\t*\n\tFROM\n\t\tm.g\n\tWHERE\n\t\te1 = 5\n\tGROUP BY e1\n\tHAVING\n\t\te1 > 0\n\tORDER BY e1"); //$NON-NLS-1$ } } public void testSetCriteria1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ISetCriteria sc = factory.createSetCriteria(); sc.setExpression(factory.createElementSymbol("e1")); //$NON-NLS-1$ sc.setValues(new ArrayList()); helpTest(sc, "e1 IN ()"); //$NON-NLS-1$ } } public void testSetCriteria2() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ISetCriteria sc = factory.createSetCriteria(); sc.setExpression(factory.createElementSymbol("e1")); //$NON-NLS-1$ ArrayList values = new ArrayList(); values.add(factory.createElementSymbol("e2")); //$NON-NLS-1$ values.add(factory.createConstant("abc")); //$NON-NLS-1$ sc.setValues(values); helpTest(sc, "e1 IN (e2, 'abc')"); //$NON-NLS-1$ } } public void testSetCriteria3() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ISetCriteria sc = factory.createSetCriteria(); sc.setExpression(factory.createElementSymbol("e1")); //$NON-NLS-1$ ArrayList values = new ArrayList(); values.add(null); values.add(factory.createConstant("b")); //$NON-NLS-1$ sc.setValues(values); helpTest(sc, "e1 IN (<undefined>, 'b')"); //$NON-NLS-1$ } } public void testSetCriteria4() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ISetCriteria sc = factory.createSetCriteria(); sc.setExpression(factory.createElementSymbol("e1")); //$NON-NLS-1$ ArrayList values = new ArrayList(); values.add(factory.createElementSymbol("e2")); //$NON-NLS-1$ values.add(factory.createConstant("abc")); //$NON-NLS-1$ sc.setValues(values); sc.setNegated(true); helpTest(sc, "e1 NOT IN (e2, 'abc')"); //$NON-NLS-1$ } } public void testSetQuery1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ISelect s1 = factory.createSelect(); s1.addSymbol(factory.createElementSymbol("e1")); //$NON-NLS-1$ IFrom f1 = factory.createFrom(); f1.addGroup(factory.createGroupSymbol("m.g1")); //$NON-NLS-1$ IQuery q1 = factory.createQuery(); q1.setSelect(s1); q1.setFrom(f1); ISelect s2 = factory.createSelect(); s2.addSymbol(factory.createElementSymbol("e1")); //$NON-NLS-1$ IFrom f2 = factory.createFrom(); f2.addGroup(factory.createGroupSymbol("m.g2")); //$NON-NLS-1$ IQuery q2 = factory.createQuery(); q2.setSelect(s2); q2.setFrom(f2); ISetQuery sq = factory.createSetQuery(ISetQuery.Operation.UNION); sq.setAll(false); sq.setLeftQuery(q1); sq.setRightQuery(q2); helpTest(sq, "SELECT\n\t\te1\n\tFROM\n\t\tm.g1\nUNION\nSELECT\n\t\te1\n\tFROM\n\t\tm.g2"); //$NON-NLS-1$ } } public void testSetQuery2() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ISelect s1 = factory.createSelect(); s1.addSymbol(factory.createElementSymbol("e1")); //$NON-NLS-1$ IFrom f1 = factory.createFrom(); f1.addGroup(factory.createGroupSymbol("m.g1")); //$NON-NLS-1$ IQuery q1 = factory.createQuery(); q1.setSelect(s1); q1.setFrom(f1); ISelect s2 = factory.createSelect(); s2.addSymbol(factory.createElementSymbol("e1")); //$NON-NLS-1$ IFrom f2 = factory.createFrom(); f2.addGroup(factory.createGroupSymbol("m.g2")); //$NON-NLS-1$ IQuery q2 = factory.createQuery(); q2.setSelect(s2); q2.setFrom(f2); ISetQuery sq = factory.createSetQuery(ISetQuery.Operation.UNION); sq.setLeftQuery(q1); sq.setRightQuery(q2); helpTest(sq, "SELECT\n\t\te1\n\tFROM\n\t\tm.g1\nUNION ALL\nSELECT\n\t\te1\n\tFROM\n\t\tm.g2"); //$NON-NLS-1$ } } public void testSetQuery3() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ISelect s1 = factory.createSelect(); s1.addSymbol(factory.createElementSymbol("e1")); //$NON-NLS-1$ IFrom f1 = factory.createFrom(); f1.addGroup(factory.createGroupSymbol("m.g1")); //$NON-NLS-1$ IQuery q1 = factory.createQuery(); q1.setSelect(s1); q1.setFrom(f1); ISelect s2 = factory.createSelect(); s2.addSymbol(factory.createElementSymbol("e1")); //$NON-NLS-1$ IFrom f2 = factory.createFrom(); f2.addGroup(factory.createGroupSymbol("m.g2")); //$NON-NLS-1$ IQuery q2 = factory.createQuery(); q2.setSelect(s2); q2.setFrom(f2); IOrderBy orderBy = factory.createOrderBy(); orderBy.addVariable(factory.createElementSymbol("e1")); //$NON-NLS-1$ ISetQuery sq = factory.createSetQuery(ISetQuery.Operation.UNION, false, q1, q2); sq.setOrderBy(orderBy); helpTest(sq, "SELECT\n\t\te1\n\tFROM\n\t\tm.g1\nUNION\nSELECT\n\t\te1\n\tFROM\n\t\tm.g2\nORDER BY e1"); //$NON-NLS-1$ } } public void testSetQuery4() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ISelect s1 = factory.createSelect(); s1.addSymbol(factory.createElementSymbol("e1")); //$NON-NLS-1$ IFrom f1 = factory.createFrom(); f1.addGroup(factory.createGroupSymbol("m.g1")); //$NON-NLS-1$ IQuery q1 = factory.createQuery(); q1.setSelect(s1); q1.setFrom(f1); ISelect s2 = factory.createSelect(); s2.addSymbol(factory.createElementSymbol("e1")); //$NON-NLS-1$ IFrom f2 = factory.createFrom(); f2.addGroup(factory.createGroupSymbol("m.g2")); //$NON-NLS-1$ IQuery q2 = factory.createQuery(); q2.setSelect(s2); q2.setFrom(f2); ISetQuery sq = factory.createSetQuery(ISetQuery.Operation.UNION, false, q1, q2); helpTest(sq, "SELECT\n\t\te1\n\tFROM\n\t\tm.g1\nUNION\nSELECT\n\t\te1\n\tFROM\n\t\tm.g2"); //$NON-NLS-1$ } } public void testSetQuery5() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ISelect s1 = factory.createSelect(); s1.addSymbol(factory.createElementSymbol("e1")); //$NON-NLS-1$ IFrom f1 = factory.createFrom(); f1.addGroup(factory.createGroupSymbol("m.g1")); //$NON-NLS-1$ IQuery q1 = factory.createQuery(); q1.setSelect(s1); q1.setFrom(f1); ISelect s2 = factory.createSelect(); s2.addSymbol(factory.createElementSymbol("e1")); //$NON-NLS-1$ IFrom f2 = factory.createFrom(); f2.addGroup(factory.createGroupSymbol("m.g2")); //$NON-NLS-1$ IQuery q2 = factory.createQuery(); q2.setSelect(s2); q2.setFrom(f2); ISelect s3 = factory.createSelect(); s3.addSymbol(factory.createElementSymbol("e3")); //$NON-NLS-1$ IFrom f3 = factory.createFrom(); f3.addGroup(factory.createGroupSymbol("m.g3")); //$NON-NLS-1$ IQuery q3 = factory.createQuery(); q3.setSelect(s3); q3.setFrom(f3); ISetQuery sq = factory.createSetQuery(ISetQuery.Operation.UNION, false, q1, q2); ISetQuery sq2 = factory.createSetQuery(ISetQuery.Operation.UNION, true, q3, sq); helpTest(sq2, "SELECT\n\t\te3\n\tFROM\n\t\tm.g3\nUNION ALL\n(SELECT\n\t\te1\n\tFROM\n\t\tm.g1\nUNION\nSELECT\n\t\te1\n\tFROM\n\t\tm.g2)"); //$NON-NLS-1$ } } public void testSubqueryFromClause1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ISelect s1 = factory.createSelect(); s1.addSymbol(factory.createElementSymbol("e1")); //$NON-NLS-1$ IFrom f1 = factory.createFrom(); f1.addGroup(factory.createGroupSymbol("m.g1")); //$NON-NLS-1$ IQuery q1 = factory.createQuery(); q1.setSelect(s1); q1.setFrom(f1); ISubqueryFromClause sfc = factory.createSubqueryFromClause("temp", q1); //$NON-NLS-1$ helpTest(sfc, "(SELECT e1 FROM m.g1) AS temp"); //$NON-NLS-1$ } } public void testOptionalSubqueryFromClause1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ISelect s1 = factory.createSelect(); s1.addSymbol(factory.createElementSymbol("e1")); //$NON-NLS-1$ IFrom f1 = factory.createFrom(); f1.addGroup(factory.createGroupSymbol("m.g1")); //$NON-NLS-1$ IQuery q1 = factory.createQuery(); q1.setSelect(s1); q1.setFrom(f1); ISubqueryFromClause sfc = factory.createSubqueryFromClause("temp", q1); //$NON-NLS-1$ sfc.setOptional(true); helpTest(sfc, "/*+ optional */ (SELECT e1 FROM m.g1) AS temp"); //$NON-NLS-1$ } } public void testSubquerySetCriteria1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ISelect s1 = factory.createSelect(); s1.addSymbol(factory.createElementSymbol("e1")); //$NON-NLS-1$ IFrom f1 = factory.createFrom(); f1.addGroup(factory.createGroupSymbol("m.g1")); //$NON-NLS-1$ IQuery q1 = factory.createQuery(); q1.setSelect(s1); q1.setFrom(f1); IElementSymbol expr = factory.createElementSymbol("e2"); //$NON-NLS-1$ ISubquerySetCriteria ssc = factory.createSubquerySetCriteria(expr, q1); helpTest(ssc, "e2 IN (SELECT e1 FROM m.g1)"); //$NON-NLS-1$ } } public void testSubquerySetCriteria2() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ISelect s1 = factory.createSelect(); s1.addSymbol(factory.createElementSymbol("e1")); //$NON-NLS-1$ IFrom f1 = factory.createFrom(); f1.addGroup(factory.createGroupSymbol("m.g1")); //$NON-NLS-1$ IQuery q1 = factory.createQuery(); q1.setSelect(s1); q1.setFrom(f1); IElementSymbol expr = factory.createElementSymbol("e2"); //$NON-NLS-1$ ISubquerySetCriteria ssc = factory.createSubquerySetCriteria(expr, q1); ssc.setNegated(true); helpTest(ssc, "e2 NOT IN (SELECT e1 FROM m.g1)"); //$NON-NLS-1$ } } public void testUnaryFromClause() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); helpTest(factory.createUnaryFromClause(factory.createGroupSymbol("m.g1")), "m.g1"); //$NON-NLS-1$ //$NON-NLS-2$ } } public void testOptionalUnaryFromClause() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IUnaryFromClause unaryFromClause = factory.createUnaryFromClause(factory.createGroupSymbol("m.g1"));//$NON-NLS-1$ unaryFromClause.setOptional(true); helpTest(unaryFromClause, "/*+ optional */ m.g1"); //$NON-NLS-1$ } } public void testAggregateSymbol1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IAggregateSymbol agg = factory.createAggregateSymbol("abc", IAggregateSymbol.Type.COUNT, false, factory.createConstant("abc")); //$NON-NLS-1$ //$NON-NLS-2$ helpTest(agg, getExpectedResult("testAggregateSymbol1", version)); //$NON-NLS-1$ } } public void testAggregateSymbol2() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IAggregateSymbol agg = factory.createAggregateSymbol("abc", IAggregateSymbol.Type.COUNT, true, factory.createConstant("abc")); //$NON-NLS-1$ //$NON-NLS-2$ helpTest(agg, getExpectedResult("testAggregateSymbol2", version)); //$NON-NLS-1$ } } public void testAggregateSymbol3() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IAggregateSymbol agg = factory.createAggregateSymbol("abc", IAggregateSymbol.Type.COUNT, false, null); //$NON-NLS-1$ helpTest(agg, getExpectedResult("testAggregateSymbol3", version)); //$NON-NLS-1$ } } public void testAggregateSymbol4() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IAggregateSymbol agg = factory.createAggregateSymbol("abc", IAggregateSymbol.Type.AVG, false, factory.createConstant("abc")); //$NON-NLS-1$ //$NON-NLS-2$ helpTest(agg, getExpectedResult("testAggregateSymbol4", version)); //$NON-NLS-1$ } } public void testAggregateSymbol5() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IAggregateSymbol agg = factory.createAggregateSymbol("abc", IAggregateSymbol.Type.SUM, false, factory.createConstant("abc")); //$NON-NLS-1$ //$NON-NLS-2$ helpTest(agg, getExpectedResult("testAggregateSymbol5", version)); //$NON-NLS-1$ } } public void testAggregateSymbol6() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IAggregateSymbol agg = factory.createAggregateSymbol("abc", IAggregateSymbol.Type.MIN, false, factory.createConstant("abc")); //$NON-NLS-1$ //$NON-NLS-2$ helpTest(agg, getExpectedResult("testAggregateSymbol6", version)); //$NON-NLS-1$ } } public void testAggregateSymbol7() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IAggregateSymbol agg = factory.createAggregateSymbol("abc", IAggregateSymbol.Type.MAX, false, factory.createConstant("abc")); //$NON-NLS-1$ //$NON-NLS-2$ helpTest(agg, getExpectedResult("testAggregateSymbol7", version)); //$NON-NLS-1$ } } public void testAliasSymbol1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IAliasSymbol as = factory.createAliasSymbol("x", factory.createElementSymbol("y")); //$NON-NLS-1$ //$NON-NLS-2$ helpTest(as, "y AS x"); //$NON-NLS-1$ } } // Test alias symbol with reserved word public void testAliasSymbol2() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IAliasSymbol as = factory.createAliasSymbol("select", factory.createElementSymbol("y")); //$NON-NLS-1$ //$NON-NLS-2$ helpTest(as, "y AS \"select\""); //$NON-NLS-1$ } } public void testMultipleElementSymbol() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); helpTest(factory.createMultipleElementSymbol(), "*"); //$NON-NLS-1$ } } public void testConstantNull() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); helpTest(factory.createConstant(null), "null"); //$NON-NLS-1$ } } public void testConstantString() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); helpTest(factory.createConstant("abc"), "'abc'"); //$NON-NLS-1$ //$NON-NLS-2$ } } public void testConstantInteger() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); helpTest(factory.createConstant(new Integer(5)), "5"); //$NON-NLS-1$ } } public void testConstantBigDecimal() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); helpTest(factory.createConstant(new BigDecimal("5.4")), "5.4"); //$NON-NLS-1$ //$NON-NLS-2$ } } public void testConstantStringWithTick() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); helpTest(factory.createConstant("O'Leary"), "'O''Leary'"); //$NON-NLS-1$ //$NON-NLS-2$ } } public void testConstantStringWithTicks() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); helpTest(factory.createConstant("'abc'"), "'''abc'''"); //$NON-NLS-1$ //$NON-NLS-2$ } } public void testConstantStringWithMoreTicks() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); helpTest(factory.createConstant("a'b'c"), "'a''b''c'"); //$NON-NLS-1$ //$NON-NLS-2$ } } public void testConstantStringWithDoubleTick() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); helpTest(factory.createConstant("group=\"x\""), "'group=\"x\"'"); //$NON-NLS-1$ //$NON-NLS-2$ } } public void testConstantBooleanTrue() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); helpTest(factory.createConstant(Boolean.TRUE), "TRUE"); //$NON-NLS-1$ } } public void testConstantBooleanFalse() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); helpTest(factory.createConstant(Boolean.FALSE), "FALSE"); //$NON-NLS-1$ } } public void testConstantDate() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); helpTest(factory.createConstant(java.sql.Date.valueOf("2002-10-02")), "{d'2002-10-02'}"); //$NON-NLS-1$ //$NON-NLS-2$ } } public void testConstantTime() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); helpTest(factory.createConstant(java.sql.Time.valueOf("5:00:00")), "{t'05:00:00'}"); //$NON-NLS-1$ //$NON-NLS-2$ } } public void testConstantTimestamp() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); helpTest(factory.createConstant(java.sql.Timestamp.valueOf("2002-10-02 17:10:35.0234")), "{ts'2002-10-02 17:10:35.0234'}"); //$NON-NLS-1$ //$NON-NLS-2$ } } public void testElementSymbol1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IElementSymbol es = factory.createElementSymbol("elem"); //$NON-NLS-1$ helpTest(es, "elem"); //$NON-NLS-1$ } } public void testElementSymbol2() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IElementSymbol es = factory.createElementSymbol("elem", false); //$NON-NLS-1$ es.setGroupSymbol(factory.createGroupSymbol("m.g")); //$NON-NLS-1$ helpTest(es, "elem"); //$NON-NLS-1$ } } public void testElementSymbol3() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IElementSymbol es = factory.createElementSymbol("m.g.elem", true); //$NON-NLS-1$ es.setGroupSymbol(factory.createGroupSymbol("m.g")); //$NON-NLS-1$ helpTest(es, "m.g.elem"); //$NON-NLS-1$ } } public void testElementSymbol4() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IElementSymbol es = factory.createElementSymbol("elem", true); //$NON-NLS-1$ es.setGroupSymbol(factory.createGroupSymbol("m.g")); //$NON-NLS-1$ helpTest(es, "m.g.elem"); //$NON-NLS-1$ } } public void testElementSymbol5() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IElementSymbol es = factory.createElementSymbol("m.g.select", false); //$NON-NLS-1$ es.setGroupSymbol(factory.createGroupSymbol("m.g")); //$NON-NLS-1$ helpTest(es, "\"select\""); //$NON-NLS-1$ } } public void testExpressionSymbol1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IExpressionSymbol expr = factory.createExpressionSymbol("abc", factory.createConstant("abc")); //$NON-NLS-1$ //$NON-NLS-2$ helpTest(expr, "'abc'"); //$NON-NLS-1$ } } public void testFunction1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); List<? extends IExpression> expressions = Arrays.asList(factory.createConstant("a"), null); //$NON-NLS-1$ IFunction func = factory.createFunction("concat", expressions); //$NON-NLS-1$ helpTest(func, "concat('a', <undefined>)"); //$NON-NLS-1$ } } public void testFunction2() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IFunction func = factory.createFunction("now", new ArrayList<IExpression>()); //$NON-NLS-1$ helpTest(func, "now()"); //$NON-NLS-1$ } } public void testFunction3() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IFunction func = factory.createFunction("concat", createList(null, null)); //$NON-NLS-1$ helpTest(func, "concat(<undefined>, <undefined>)"); //$NON-NLS-1$ } } public void testFunction4() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IFunction func1 = factory.createFunction("power", createList( //$NON-NLS-1$ factory.createConstant(new Integer(5)), factory.createConstant(new Integer(3)))); IFunction func2 = factory.createFunction("power", createList( //$NON-NLS-1$ func1, factory.createConstant(new Integer(3)))); IFunction func3 = factory.createFunction("+", createList( //$NON-NLS-1$ factory.createConstant(new Integer(1000)), func2)); helpTest(func3, "(1000 + power(power(5, 3), 3))"); //$NON-NLS-1$ } } public void testFunction5() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IFunction func1 = factory.createFunction("concat", createList( //$NON-NLS-1$ factory.createElementSymbol("elem2"), //$NON-NLS-1$ null)); IFunction func2 = factory.createFunction("concat", createList( //$NON-NLS-1$ factory.createElementSymbol("elem1"), //$NON-NLS-1$ func1)); helpTest(func2, "concat(elem1, concat(elem2, <undefined>))"); //$NON-NLS-1$ } } public void testConvertFunction1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IFunction func = factory.createFunction("convert", createList( //$NON-NLS-1$ factory.createConstant("5"), //$NON-NLS-1$ factory.createConstant("integer") //$NON-NLS-1$ )); helpTest(func, "convert('5', integer)"); //$NON-NLS-1$ } } public void testConvertFunction2() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IFunction func = factory.createFunction("convert", createList( //$NON-NLS-1$ null, factory.createConstant("integer") //$NON-NLS-1$ )); helpTest(func, "convert(<undefined>, integer)"); //$NON-NLS-1$ } } public void testConvertFunction3() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IFunction func = factory.createFunction("convert", createList( //$NON-NLS-1$ factory.createConstant(null), factory.createConstant("integer") //$NON-NLS-1$ )); helpTest(func, "convert(null, integer)"); //$NON-NLS-1$ } } public void testConvertFunction5() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IFunction func = factory.createFunction("convert", null); //$NON-NLS-1$ helpTest(func, "convert()"); //$NON-NLS-1$ } } public void testConvertFunction6() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IFunction func = factory.createFunction("convert", new ArrayList<IExpression>()); //$NON-NLS-1$ helpTest(func, "convert()"); //$NON-NLS-1$ } } public void testCastFunction1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IFunction func = factory.createFunction("cast", createList( //$NON-NLS-1$ factory.createConstant("5"), //$NON-NLS-1$ factory.createConstant("integer") //$NON-NLS-1$ )); helpTest(func, "cast('5' AS integer)"); //$NON-NLS-1$ } } public void testCastFunction2() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IFunction func = factory.createFunction("cast", createList( //$NON-NLS-1$ null, factory.createConstant("integer") //$NON-NLS-1$ )); helpTest(func, "cast(<undefined> AS integer)"); //$NON-NLS-1$ } } public void testCastFunction3() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IFunction func = factory.createFunction("cast", createList( //$NON-NLS-1$ factory.createConstant(null), factory.createConstant("integer") //$NON-NLS-1$ )); helpTest(func, "cast(null AS integer)"); //$NON-NLS-1$ } } public void testArithemeticFunction1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IFunction func = factory.createFunction("-", createList( //$NON-NLS-1$ factory.createConstant(new Integer(-2)), factory.createConstant(new Integer(-1)))); helpTest(func, "(-2 - -1)"); //$NON-NLS-1$ } } public void testGroupSymbol1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IGroupSymbol gs = factory.createGroupSymbol("g"); //$NON-NLS-1$ helpTest(gs, "g"); //$NON-NLS-1$ } } public void testGroupSymbol2() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IGroupSymbol gs = factory.createGroupSymbol("x", "g"); //$NON-NLS-1$ //$NON-NLS-2$ helpTest(gs, "g AS x"); //$NON-NLS-1$ } } public void testGroupSymbol3() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IGroupSymbol gs = factory.createGroupSymbol("vdb.g"); //$NON-NLS-1$ helpTest(gs, "vdb.g"); //$NON-NLS-1$ } } public void testGroupSymbol4() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IGroupSymbol gs = factory.createGroupSymbol("x", "vdb.g"); //$NON-NLS-1$ //$NON-NLS-2$ helpTest(gs, "vdb.g AS x"); //$NON-NLS-1$ } } public void testGroupSymbol5() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IGroupSymbol gs = factory.createGroupSymbol("from", "m.g"); //$NON-NLS-1$ //$NON-NLS-2$ helpTest(gs, "m.g AS \"from\""); //$NON-NLS-1$ } } public void testGroupSymbol6() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IGroupSymbol gs = factory.createGroupSymbol("x", "on.select"); //$NON-NLS-1$ //$NON-NLS-2$ helpTest(gs, "\"on\".\"select\" AS x"); //$NON-NLS-1$ } } public void testExecNoParams() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IStoredProcedure proc = factory.createStoredProcedure(); proc.setProcedureName("myproc"); //$NON-NLS-1$ helpTest(proc, "EXEC myproc()"); //$NON-NLS-1$ } } public void testExecInputParam() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IStoredProcedure proc = factory.createStoredProcedure(); proc.setProcedureName("myproc"); //$NON-NLS-1$ ISPParameter param = factory.createSPParameter(1, factory.createReference(0)); proc.setParameter(param); helpTest(proc, "EXEC myproc(?)"); //$NON-NLS-1$ } } public void testExecInputOutputParam() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IStoredProcedure proc = factory.createStoredProcedure(); proc.setProcedureName("myproc"); //$NON-NLS-1$ ISPParameter param1 = factory.createSPParameter(1, factory.createConstant(new Integer(5))); param1.setParameterType(ISPParameter.ParameterInfo.IN); proc.setParameter(param1); ISPParameter param2 = factory.createSPParameter(2, ISPParameter.ParameterInfo.OUT, "x"); //$NON-NLS-1$ proc.setParameter(param2); helpTest(proc, "EXEC myproc(5)"); //$NON-NLS-1$ } } public void testExecOutputInputParam() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IStoredProcedure proc = factory.createStoredProcedure(); proc.setProcedureName("myproc"); //$NON-NLS-1$ ISPParameter param2 = factory.createSPParameter(2, ISPParameter.ParameterInfo.OUT, "x"); //$NON-NLS-1$ proc.setParameter(param2); ISPParameter param1 = factory.createSPParameter(1, factory.createConstant(new Integer(5))); param1.setParameterType(ISPParameter.ParameterInfo.IN); proc.setParameter(param1); helpTest(proc, "EXEC myproc(5)"); //$NON-NLS-1$ } } public void testExecReturnParam() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IStoredProcedure proc = factory.createStoredProcedure(); proc.setProcedureName("myproc"); //$NON-NLS-1$ ISPParameter param = factory.createSPParameter(1, ISPParameter.ParameterInfo.RETURN_VALUE, "ret"); //$NON-NLS-1$ proc.setParameter(param); helpTest(proc, "EXEC myproc()"); //$NON-NLS-1$ } } public void testExecNamedParam() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IStoredProcedure proc = factory.createStoredProcedure(); proc.setDisplayNamedParameters(true); proc.setProcedureName("myproc"); //$NON-NLS-1$ ISPParameter param = factory.createSPParameter(1, factory.createReference(0)); param.setName("p1");//$NON-NLS-1$ proc.setParameter(param); helpTest(proc, "EXEC myproc(p1 => ?)"); //$NON-NLS-1$ } } public void testExecNamedParams() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IStoredProcedure proc = factory.createStoredProcedure(); proc.setDisplayNamedParameters(true); proc.setProcedureName("myproc"); //$NON-NLS-1$ ISPParameter param = factory.createSPParameter(1, factory.createReference(0)); param.setName("p1");//$NON-NLS-1$ proc.setParameter(param); ISPParameter param2 = factory.createSPParameter(2, factory.createReference(0)); param2.setName("p2");//$NON-NLS-1$ proc.setParameter(param2); helpTest(proc, "EXEC myproc(p1 => ?, p2 => ?)"); //$NON-NLS-1$ } } /** * Test when a parameter's name is a reserved word. (Note: parameters should always have short names, not multiple * period-delimited name components.) * * @since 4.3 */ public void testExecNamedParamsReservedWord() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IStoredProcedure proc = factory.createStoredProcedure(); proc.setDisplayNamedParameters(true); proc.setProcedureName("myproc"); //$NON-NLS-1$ ISPParameter param = factory.createSPParameter(1, factory.createReference(0)); param.setName("in");//$NON-NLS-1$ proc.setParameter(param); ISPParameter param2 = factory.createSPParameter(2, factory.createReference(0)); param2.setName("in2");//$NON-NLS-1$ proc.setParameter(param2); helpTest(proc, "EXEC myproc(\"in\" => ?, in2 => ?)"); //$NON-NLS-1$ } } // Test methods for Update Procedure Language Objects public void testDeclareStatement() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IDeclareStatement dclStmt = factory.createDeclareStatement(factory.createElementSymbol("a"), "String"); //$NON-NLS-1$ //$NON-NLS-2$ helpTest(dclStmt, "DECLARE String a;"); //$NON-NLS-1$ } } public void testRaiseStatement() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IRaiseStatement errStmt = factory.createRaiseStatement(factory.createConstant("My Error")); //$NON-NLS-1$ helpTest(errStmt, getExpectedResult("testRaiseStatement", version)); //$NON-NLS-1$ } } public void testRaiseStatementWithExpression() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IRaiseStatement errStmt = factory.createRaiseStatement(factory.createElementSymbol("a")); //$NON-NLS-1$ helpTest(errStmt, getExpectedResult("testRaiseStatementWithExpression", version)); //$NON-NLS-1$ } } public void testAssignmentStatement1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IAssignmentStatement assigStmt = factory.createAssignmentStatement(factory.createElementSymbol("a"), factory.createConstant(new Integer(1))); //$NON-NLS-1$ helpTest(assigStmt, "a = 1;"); //$NON-NLS-1$ } } public void FAILINGtestAssignmentStatement2() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); // TODO fix this test IQuery q1 = factory.createQuery(); ISelect select = factory.createSelect(); select.addSymbol(factory.createElementSymbol("x")); //$NON-NLS-1$ q1.setSelect(select); IFrom from = factory.createFrom(); from.addGroup(factory.createGroupSymbol("g")); //$NON-NLS-1$ q1.setFrom(from); IAssignmentStatement assigStmt = factory.createAssignmentStatement(factory.createElementSymbol("a"), q1); //$NON-NLS-1$ helpTest(assigStmt, "a = SELECT x FROM g;"); //$NON-NLS-1$ } } public void testCommandStatement1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IQuery q1 = factory.createQuery(); ISelect select = factory.createSelect(); select.addSymbol(factory.createElementSymbol("x")); //$NON-NLS-1$ q1.setSelect(select); IFrom from = factory.createFrom(); from.addGroup(factory.createGroupSymbol("g")); //$NON-NLS-1$ q1.setFrom(from); ICommandStatement cmdStmt = factory.createCommandStatement(q1); helpTest(cmdStmt, "SELECT x FROM g;"); //$NON-NLS-1$ } } public void testCommandStatement2() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IDelete d1 = factory.createDelete(); d1.setGroup(factory.createGroupSymbol("g")); //$NON-NLS-1$ ICommandStatement cmdStmt = factory.createCommandStatement(d1); helpTest(cmdStmt, "DELETE FROM g;"); //$NON-NLS-1$ } } public void testBlock1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IDelete d1 = factory.createDelete(); d1.setGroup(factory.createGroupSymbol("g")); //$NON-NLS-1$ ICommandStatement cmdStmt = factory.createCommandStatement(d1); IAssignmentStatement assigStmt = factory.createAssignmentStatement(factory.createElementSymbol("a"), factory.createConstant(new Integer(1))); //$NON-NLS-1$ IRaiseStatement errStmt = factory.createRaiseStatement(factory.createConstant("My Error")); //$NON-NLS-1$ IBlock b = factory.createBlock(); b.addStatement(cmdStmt); b.addStatement(assigStmt); b.addStatement(errStmt); helpTest(b, getExpectedResult("testBlock1", version)); //$NON-NLS-1$ } } public void testCreateUpdateProcedure1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IDelete d1 = factory.createDelete(); d1.setGroup(factory.createGroupSymbol("g")); //$NON-NLS-1$ ICommandStatement cmdStmt = factory.createCommandStatement(d1); IAssignmentStatement assigStmt = factory.createAssignmentStatement(factory.createElementSymbol("a"), factory.createConstant(new Integer(1))); //$NON-NLS-1$ IRaiseStatement errStmt = factory.createRaiseStatement(factory.createConstant("My Error")); //$NON-NLS-1$ IBlock b = factory.createBlock(); b.addStatement(cmdStmt); b.addStatement(assigStmt); b.addStatement(errStmt); ICreateProcedureCommand cup = factory.createCreateProcedureCommand(b); helpTest(cup, getExpectedResult("testCreateUpdateProcedure1", version)); //$NON-NLS-1$ } } public void testCreateUpdateProcedure2() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IDelete d1 = factory.createDelete(); d1.setGroup(factory.createGroupSymbol("g")); //$NON-NLS-1$ ICommandStatement cmdStmt = factory.createCommandStatement(d1); IAssignmentStatement assigStmt = factory.createAssignmentStatement(factory.createElementSymbol("a"), factory.createConstant(new Integer(1))); //$NON-NLS-1$ IRaiseStatement errStmt = factory.createRaiseStatement(factory.createConstant("My Error")); //$NON-NLS-1$ IBlock b = factory.createBlock(); b.addStatement(cmdStmt); b.addStatement(assigStmt); b.addStatement(errStmt); ICreateProcedureCommand cup = factory.createCreateProcedureCommand(b); helpTest(cup, getExpectedResult("testCreateUpdateProcedure2", version)); //$NON-NLS-1$ } } public void testCreateUpdateProcedure3() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IDelete d1 = factory.createDelete(); d1.setGroup(factory.createGroupSymbol("g")); //$NON-NLS-1$ ICommandStatement cmdStmt = factory.createCommandStatement(d1); IAssignmentStatement assigStmt = factory.createAssignmentStatement(factory.createElementSymbol("a"), factory.createConstant(new Integer(1))); //$NON-NLS-1$ IRaiseStatement errStmt = factory.createRaiseStatement(factory.createConstant("My Error")); //$NON-NLS-1$ IBlock b = factory.createBlock(); b.addStatement(cmdStmt); b.addStatement(assigStmt); b.addStatement(errStmt); ICreateProcedureCommand cup = factory.createCreateProcedureCommand(b); helpTest(cup, getExpectedResult("testCreateUpdateProcedure3", version)); //$NON-NLS-1$ } } public void testSubqueryCompareCriteria1() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ISelect s1 = factory.createSelect(); s1.addSymbol(factory.createElementSymbol("e1")); //$NON-NLS-1$ IFrom f1 = factory.createFrom(); f1.addGroup(factory.createGroupSymbol("m.g1")); //$NON-NLS-1$ IQuery q1 = factory.createQuery(); q1.setSelect(s1); q1.setFrom(f1); IElementSymbol expr = factory.createElementSymbol("e2"); //$NON-NLS-1$ ISubqueryCompareCriteria scc = factory.createSubqueryCompareCriteria(expr, q1, ICompareCriteria.EQ, ISubqueryCompareCriteria.ANY); helpTest(scc, "e2 = ANY (SELECT e1 FROM m.g1)"); //$NON-NLS-1$ } } public void testSubqueryCompareCriteria2() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ISelect s1 = factory.createSelect(); s1.addSymbol(factory.createElementSymbol("e1")); //$NON-NLS-1$ IFrom f1 = factory.createFrom(); f1.addGroup(factory.createGroupSymbol("m.g1")); //$NON-NLS-1$ IQuery q1 = factory.createQuery(); q1.setSelect(s1); q1.setFrom(f1); IElementSymbol expr = factory.createElementSymbol("e2"); //$NON-NLS-1$ ISubqueryCompareCriteria scc = factory.createSubqueryCompareCriteria(expr, q1, ICompareCriteria.LE, ISubqueryCompareCriteria.SOME); helpTest(scc, "e2 <= SOME (SELECT e1 FROM m.g1)"); //$NON-NLS-1$ } } public void testScalarSubquery() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ISelect s1 = factory.createSelect(); s1.addSymbol(factory.createElementSymbol("e1")); //$NON-NLS-1$ IFrom f1 = factory.createFrom(); f1.addGroup(factory.createGroupSymbol("m.g1")); //$NON-NLS-1$ IQuery q1 = factory.createQuery(); q1.setSelect(s1); q1.setFrom(f1); IScalarSubquery obj = factory.createScalarSubquery(q1); helpTest(obj, "(SELECT e1 FROM m.g1)"); //$NON-NLS-1$ } } public void testNewSubqueryObjects() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ISelect s1 = factory.createSelect(); s1.addSymbol(factory.createElementSymbol("e1")); //$NON-NLS-1$ IFrom f1 = factory.createFrom(); f1.addGroup(factory.createGroupSymbol("m.g1")); //$NON-NLS-1$ IQuery q1 = factory.createQuery(); q1.setSelect(s1); q1.setFrom(f1); ISelect s2 = factory.createSelect(); s2.addSymbol(factory.createElementSymbol("e1")); //$NON-NLS-1$ s2.addSymbol(factory.createExpressionSymbol("blargh", factory.createScalarSubquery(q1))); //$NON-NLS-1$ IFrom f2 = factory.createFrom(); f2.addGroup(factory.createGroupSymbol("m.g2")); //$NON-NLS-1$ ICriteria left = factory.createSubqueryCompareCriteria(factory.createElementSymbol("e3"), q1, ICompareCriteria.GE, ISubqueryCompareCriteria.ANY); //$NON-NLS-1$ ICriteria right = factory.createExistsCriteria(q1); ICriteria outer = factory.createCompoundCriteria(ICompoundCriteria.AND, createList(left, right)); IQuery q2 = factory.createQuery(); q2.setSelect(s2); q2.setFrom(f2); q2.setCriteria(outer); helpTest(q2, "SELECT\n\t\te1, (SELECT e1 FROM m.g1)\n\tFROM\n\t\tm.g2\n\tWHERE\n\t\t(e3 >= ANY (SELECT e1 FROM m.g1)) AND (EXISTS (SELECT e1 FROM m.g1))"); //$NON-NLS-1$ } } /** * For some reason this test was outputting SELECT 'A' AS FOO UNION SELECT 'A' AS FOO */ public void testSetQueryUnionOfLiteralsCase3102() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); String expected = "SELECT\n\t\t'A' AS FOO\nUNION\nSELECT\n\t\t'B' AS FOO"; //$NON-NLS-1$ ISelect s1 = factory.createSelect(); s1.addSymbol(factory.createAliasSymbol("FOO", factory.createExpressionSymbol("xxx", factory.createConstant("A")))); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ IQuery q1 = factory.createQuery(); q1.setSelect(s1); ISelect s2 = factory.createSelect(); s2.addSymbol(factory.createAliasSymbol("FOO", factory.createExpressionSymbol("xxx", factory.createConstant("B")))); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ IQuery q2 = factory.createQuery(); q2.setSelect(s2); ISetQuery sq = factory.createSetQuery(ISetQuery.Operation.UNION, false, q1, q2); helpTest(sq, expected); } } /** * For some reason this test was outputting SELECT 'A' AS FOO UNION SELECT 'A' AS FOO Same as above except that * ExpressionSymbols' internal names (which aren't visible in the query) are different */ public void testSetQueryUnionOfLiteralsCase3102a() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); String expected = "SELECT\n\t\t'A' AS FOO\nUNION\nSELECT\n\t\t'B' AS FOO"; //$NON-NLS-1$ ISelect s1 = factory.createSelect(); s1.addSymbol(factory.createAliasSymbol("FOO", factory.createExpressionSymbol("xxx", factory.createConstant("A")))); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ IQuery q1 = factory.createQuery(); q1.setSelect(s1); ISelect s2 = factory.createSelect(); s2.addSymbol(factory.createAliasSymbol("FOO", factory.createExpressionSymbol("yyy", factory.createConstant("B")))); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ IQuery q2 = factory.createQuery(); q2.setSelect(s2); ISetQuery sq = factory.createSetQuery(ISetQuery.Operation.UNION, false, q1, q2); helpTest(sq, expected); } } public void FAILINGtestNullExpressionInNamedParameter() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); // TODO fix this test String expected = "EXEC sp1(PARAM => sp1.PARAM)"; //$NON-NLS-1$ IStoredProcedure sp = factory.createStoredProcedure(); sp.setDisplayNamedParameters(true); sp.setProcedureName("sp1"); //$NON-NLS-1$ ISPParameter param = factory.createSPParameter(0, ISPParameter.ParameterInfo.IN, "sp1.PARAM"); //$NON-NLS-1$ sp.setParameter(param); helpTest(sp, expected); } } public void testQueryWithMakeDep() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IQuery query = factory.createQuery(); ISelect select = factory.createSelect(Arrays.asList(factory.createMultipleElementSymbol())); IFromClause fromClause = factory.createUnaryFromClause(factory.createGroupSymbol("a")); //$NON-NLS-1$ fromClause.setMakeDep(true); IFrom from = factory.createFrom(Arrays.asList(fromClause)); query.setSelect(select); query.setFrom(from); String expectedSQL = "SELECT\n\t\t*\n\tFROM\n\t\t/*+ MAKEDEP */ a"; //$NON-NLS-1$ helpTest(query, expectedSQL); } } public void testQueryWithJoinPredicateMakeDep() { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IQuery query = factory.createQuery(); ISelect select = factory.createSelect(Arrays.asList(factory.createMultipleElementSymbol())); IFromClause fromClause = factory.createUnaryFromClause(factory.createGroupSymbol("a")); //$NON-NLS-1$ fromClause.setMakeNotDep(true); IFromClause fromClause1 = factory.createUnaryFromClause(factory.createGroupSymbol("b")); //$NON-NLS-1$ fromClause1.setMakeDep(true); IFrom from = factory.createFrom(Arrays.asList(factory.createJoinPredicate(fromClause, fromClause1, factory.getJoinType(IJoinType.Types.JOIN_CROSS)))); query.setSelect(select); query.setFrom(from); helpTest(query, "SELECT\n\t\t*\n\tFROM\n\t\t/*+ MAKENOTDEP */ a CROSS JOIN /*+ MAKEDEP */ b"); //$NON-NLS-1$ } } public void testQueryWithNestedJoinPredicateMakeDep() throws Exception { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IQuery query = (IQuery)parser.parseCommand("Select a From (db.g1 JOIN db.g2 ON a = b) makedep LEFT OUTER JOIN db.g3 ON a = c"); //$NON-NLS-1$ helpTest(query, "SELECT\n\t\ta\n\tFROM\n\t\t/*+ MAKEDEP */ (db.g1 INNER JOIN db.g2 ON a = b) LEFT OUTER JOIN db.g3 ON a = c"); //$NON-NLS-1$ } } public void testCast() throws Exception { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IExpression ex = parser.parseExpression("cast(x as integer)"); //$NON-NLS-1$ helpTest(ex, "cast(x AS integer)"); //$NON-NLS-1$ } } public void testXMLPi() throws Exception { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IExpression ex = parser.parseExpression("xmlpi(name foo, 'bar')"); //$NON-NLS-1$ helpTest(ex, "xmlpi(NAME foo, 'bar')"); //$NON-NLS-1$ } } public void testXMLPi1() throws Exception { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IExpression ex = parser.parseExpression("xmlpi(name \"table\", 'bar')"); //$NON-NLS-1$ helpTest(ex, "xmlpi(NAME \"table\", 'bar')"); //$NON-NLS-1$ } } public void testTimestampAdd() throws Exception { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); IExpression ex = parser.parseExpression("timestampadd(SQL_TSI_DAY, x, y)"); //$NON-NLS-1$ helpTest(ex, "timestampadd(SQL_TSI_DAY, x, y)"); //$NON-NLS-1$ } } public void testXMLAgg() throws Exception { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ILanguageObject ex = parser.parseCommand("select xmlagg(x order by y)"); //$NON-NLS-1$ helpTest(ex, "SELECT\n\t\tXMLAGG(x ORDER BY y)"); //$NON-NLS-1$ } } public void testXMLElement() throws Exception { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ILanguageObject ex = parser.parseExpression("xmlelement(name y, xmlattributes('x' as foo), q)"); //$NON-NLS-1$ helpTest(ex, "XMLELEMENT(NAME y, XMLATTRIBUTES('x' AS foo), q)"); //$NON-NLS-1$ } } /* Cache hints have been removed from the teiid runtime client */ // public void testCacheHint() throws Exception { // for (ITeiidServerVersion version : serverVersions) { // setDefaultServerVersion(version); // ILanguageObject ex = parser.parseCommand("/*+ cache(pref_mem) */ select * from db.g2"); //$NON-NLS-1$ // helpTest(ex, "/*+ cache(pref_mem) */\nSELECT\n\t\t*\n\tFROM\n\t\tdb.g2"); //$NON-NLS-1$ // } // } public void testConstantAliasSymbol() throws Exception { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ILanguageObject agg = parser.parseCommand("SELECT '123' AS ID FROM X"); //$NON-NLS-1$ helpTest(agg, getExpectedResult("testConstantAliasSymbol", version)); //$NON-NLS-1$ } } public void testTrimAliasSymbol() throws Exception { // "testTrimAliasSymbol" trim(' ' FROM X) AS ID"); //$NON-NLS-1$ //$NON-NLS-2$ for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ILanguageObject agg = parser.parseCommand("SELECT trim(' ' FROM X) AS ID FROM Y"); //$NON-NLS-1$ helpTest(agg, getExpectedResult("testTrimAliasSymbol", version)); //$NON-NLS-1$ } } public void testConcatWithNull() throws Exception { for (ITeiidServerVersion version : serverVersions) { setDefaultServerVersion(version); ILanguageObject agg = parser.parseCommand("SELECT concat('abcd', null) AS ProductName FROM PRODUCTDATA"); //$NON-NLS-1$ helpTest(agg, getExpectedResult("testConcatWithNull", version)); //$NON-NLS-1$ } } // ################################## TEST SUITE ################################ /** * This suite of all tests could be defined in another class but it seems easier to maintain it here. */ public static Test suite() { TestSuite suite = new TestSuite("TestSQLStringVisitor"); //$NON-NLS-1$ suite.addTestSuite(TestDisplayNodeFactory.class); // suite.addTest(new TestSQLStringVisitor("testSetQueryUnionOfLiteralsCase3102")); return suite; } }