Search in sources :

Example 51 with Command

use of org.teiid.language.Command in project teiid by teiid.

the class TestOracleTranslator method testNativeQueryProcPreparedExecution.

@Test
public void testNativeQueryProcPreparedExecution() throws Exception {
    CommandBuilder commandBuilder = new CommandBuilder(getOracleSpecificMetadata());
    Command command = commandBuilder.getCommand("call proc(2)");
    Connection connection = Mockito.mock(Connection.class);
    CallableStatement cs = Mockito.mock(CallableStatement.class);
    Mockito.stub(cs.getUpdateCount()).toReturn(-1);
    ResultSet rs = Mockito.mock(ResultSet.class);
    Mockito.stub(cs.getObject(1)).toReturn(rs);
    Mockito.stub(cs.getInt(3)).toReturn(4);
    // $NON-NLS-1$
    Mockito.stub(connection.prepareCall("select x from y where z = ?")).toReturn(cs);
    OracleExecutionFactory ef = new OracleExecutionFactory();
    JDBCProcedureExecution procedureExecution = new JDBCProcedureExecution(command, connection, Mockito.mock(ExecutionContext.class), ef);
    procedureExecution.execute();
    Mockito.verify(cs, Mockito.never()).registerOutParameter(1, OracleExecutionFactory.CURSOR_TYPE);
    Mockito.verify(cs, Mockito.never()).getObject(1);
    Mockito.verify(cs, Mockito.times(1)).setObject(1, 2, Types.INTEGER);
}
Also used : ExecutionContext(org.teiid.translator.ExecutionContext) Command(org.teiid.language.Command) TranslatedCommand(org.teiid.translator.jdbc.TranslatedCommand) CallableStatement(java.sql.CallableStatement) Connection(java.sql.Connection) ResultSet(java.sql.ResultSet) JDBCProcedureExecution(org.teiid.translator.jdbc.JDBCProcedureExecution) CommandBuilder(org.teiid.cdk.CommandBuilder) Test(org.junit.Test)

Example 52 with Command

use of org.teiid.language.Command in project teiid by teiid.

the class TestOracleTranslator method helpTestVisitor.

/**
 * Helper method takes a QueryMetadataInterface impl instead of a VDB filename
 * @throws TranslatorException
 */
private Command helpTestVisitor(QueryMetadataInterface metadata, String input, ExecutionContext context, String dbmsTimeZone, String expectedOutput) throws TranslatorException {
    // Convert from sql to objects
    CommandBuilder commandBuilder = new CommandBuilder(metadata);
    Command obj = commandBuilder.getCommand(input);
    this.helpTestVisitor(obj, context, dbmsTimeZone, expectedOutput);
    return obj;
}
Also used : Command(org.teiid.language.Command) TranslatedCommand(org.teiid.translator.jdbc.TranslatedCommand) CommandBuilder(org.teiid.cdk.CommandBuilder)

Example 53 with Command

use of org.teiid.language.Command in project teiid by teiid.

the class TestOracleTranslator method testConcat2_useLiteral.

@Test
public void testConcat2_useLiteral() throws Exception {
    // $NON-NLS-1$
    String input = "select concat2(stringnum,'_xx') from bqt1.Smalla";
    // $NON-NLS-1$
    String output = "SELECT (g_0.StringNum || '_xx') FROM SmallA g_0";
    CommandBuilder commandBuilder = new CommandBuilder(RealMetadataFactory.exampleBQTCached());
    commandBuilder.getLanguageBridgeFactory().setSupportsConcat2(true);
    Command obj = commandBuilder.getCommand(input, true, true);
    TranslationHelper.helpTestVisitor(output, TRANSLATOR, obj);
}
Also used : Command(org.teiid.language.Command) TranslatedCommand(org.teiid.translator.jdbc.TranslatedCommand) CommandBuilder(org.teiid.cdk.CommandBuilder) Test(org.junit.Test)

Example 54 with Command

use of org.teiid.language.Command in project teiid by teiid.

the class TestOracleTranslator method testRowLimitWithUnionOrderBy.

@Test
public void testRowLimitWithUnionOrderBy() throws Exception {
    // $NON-NLS-1$
    String input = "(select intkey from bqt1.smalla limit 50, 100) union select intnum from bqt1.smalla order by intkey";
    // $NON-NLS-1$
    String output = "(SELECT c_0 FROM (SELECT VIEW_FOR_LIMIT.*, ROWNUM ROWNUM_ FROM (SELECT g_1.IntKey AS c_0 FROM SmallA g_1) VIEW_FOR_LIMIT WHERE ROWNUM <= 150) WHERE ROWNUM_ > 50) UNION SELECT g_0.IntNum AS c_0 FROM SmallA g_0 ORDER BY c_0";
    CommandBuilder commandBuilder = new CommandBuilder(RealMetadataFactory.exampleBQTCached());
    Command obj = commandBuilder.getCommand(input, true, true);
    this.helpTestVisitor(obj, EMPTY_CONTEXT, null, output);
}
Also used : Command(org.teiid.language.Command) TranslatedCommand(org.teiid.translator.jdbc.TranslatedCommand) CommandBuilder(org.teiid.cdk.CommandBuilder) Test(org.junit.Test)

Example 55 with Command

use of org.teiid.language.Command in project teiid by teiid.

the class TestJDBCDirectQueryExecution method testPrepareExecution.

@Test
public void testPrepareExecution() throws Exception {
    // $NON-NLS-1$
    Command command = TranslationHelper.helpTranslate(TranslationHelper.BQT_VDB, "call native('select * from Source where e1 = ?', 2)");
    Connection connection = Mockito.mock(Connection.class);
    PreparedStatement stmt = Mockito.mock(PreparedStatement.class);
    ResultSet rs = Mockito.mock(ResultSet.class);
    ResultSetMetaData rsm = Mockito.mock(ResultSetMetaData.class);
    Mockito.stub(stmt.getUpdateCount()).toReturn(-1);
    Mockito.stub(stmt.getResultSet()).toReturn(rs);
    Mockito.stub(stmt.execute()).toReturn(true);
    Mockito.stub(rs.getMetaData()).toReturn(rsm);
    Mockito.stub(rsm.getColumnCount()).toReturn(2);
    // $NON-NLS-1$
    Mockito.stub(connection.prepareStatement("select * from Source where e1 = ?")).toReturn(stmt);
    Mockito.stub(rs.next()).toReturn(true);
    Mockito.stub(rs.getObject(1)).toReturn(5);
    Mockito.stub(rs.getObject(2)).toReturn("five");
    DatabaseMetaData dbmd = Mockito.mock(DatabaseMetaData.class);
    Mockito.stub(connection.getMetaData()).toReturn(dbmd);
    JDBCExecutionFactory ef = new JDBCExecutionFactory();
    ef.setSupportsDirectQueryProcedure(true);
    ResultSetExecution execution = (ResultSetExecution) ef.createExecution(command, new FakeExecutionContextImpl(), Mockito.mock(RuntimeMetadata.class), connection);
    execution.execute();
    Mockito.verify(stmt).setObject(1, 2);
    assertArrayEquals(new Object[] { 5, "five" }, (Object[]) execution.next().get(0));
}
Also used : ResultSetMetaData(java.sql.ResultSetMetaData) ResultSetExecution(org.teiid.translator.ResultSetExecution) FakeExecutionContextImpl(org.teiid.dqp.internal.datamgr.FakeExecutionContextImpl) Command(org.teiid.language.Command) Connection(java.sql.Connection) ResultSet(java.sql.ResultSet) PreparedStatement(java.sql.PreparedStatement) DatabaseMetaData(java.sql.DatabaseMetaData) Test(org.junit.Test)

Aggregations

Command (org.teiid.language.Command)136 Test (org.junit.Test)99 ExecutionContext (org.teiid.translator.ExecutionContext)62 TranslationUtility (org.teiid.cdk.api.TranslationUtility)52 RuntimeMetadata (org.teiid.metadata.RuntimeMetadata)40 CommandBuilder (org.teiid.cdk.CommandBuilder)25 TransformationMetadata (org.teiid.query.metadata.TransformationMetadata)20 ResultSetExecution (org.teiid.translator.ResultSetExecution)18 TranslatedCommand (org.teiid.translator.jdbc.TranslatedCommand)17 UpdateExecution (org.teiid.translator.UpdateExecution)16 SimpleDBSQLVisitor (org.teiid.translator.simpledb.SimpleDBSQLVisitor)14 List (java.util.List)11 Connection (java.sql.Connection)10 LdapContext (javax.naming.ldap.LdapContext)9 Range (org.apache.accumulo.core.data.Range)9 SQLConversionVisitor (org.teiid.translator.jdbc.SQLConversionVisitor)9 MetadataFactory (org.teiid.metadata.MetadataFactory)8 ArrayList (java.util.ArrayList)7 FunctionTree (org.teiid.query.function.FunctionTree)7 UDFSource (org.teiid.query.function.UDFSource)7