/** * @param metadata The metadata describing the datasource which the query is for. */ public CommandBuilder(QueryMetadataInterface metadata) { this.metadata = metadata; this.languageBridgeFactory = new LanguageBridgeFactory(metadata); }
public HardcodedDataManager(QueryMetadataInterface metadata) { this(true); this.lbf = new LanguageBridgeFactory(metadata); }
public HardcodedDataManager(QueryMetadataInterface metadata, CommandContext context, SourceCapabilities capabilities) { this(true); this.lbf = new LanguageBridgeFactory(metadata); ConnectorWorkItem.initLanguageBridgeFactory(lbf, context, capabilities); }
@Test public void testStripAliases1() throws Exception { String sql = "select intkey as a, stringkey as b from BQT1.SmallA ORDER BY a, b"; //$NON-NLS-1$ String expected = "SELECT BQT1.SmallA.IntKey, BQT1.SmallA.StringKey FROM BQT1.SmallA ORDER BY BQT1.SmallA.IntKey, BQT1.SmallA.StringKey"; //$NON-NLS-1$ Command command = helpTest(sql, expected, false, true, RealMetadataFactory.exampleBQTCached()); LanguageBridgeFactory lbf = new LanguageBridgeFactory(RealMetadataFactory.exampleBQTCached()); org.teiid.language.Command c = lbf.translate(command); assertEquals("SELECT SmallA.IntKey, SmallA.StringKey FROM SmallA ORDER BY SmallA.IntKey, SmallA.StringKey", c.toString()); }
@Test public void testInlineViewOrderBy() throws Exception { String sql = "select intnum from (select intnum from bqt1.smallb) b order by b.intnum"; //$NON-NLS-1$ String expected = "SELECT v_0.c_0 FROM (SELECT g_0.IntNum AS c_0 FROM BQT1.SmallB AS g_0) AS v_0 ORDER BY c_0"; //$NON-NLS-1$ Command command = helpTest(sql, expected, true, false, RealMetadataFactory.exampleBQTCached()); LanguageBridgeFactory lbf = new LanguageBridgeFactory(RealMetadataFactory.exampleBQTCached()); org.teiid.language.Command c = lbf.translate(command); assertEquals("SELECT v_0.c_0 FROM (SELECT g_0.IntNum AS c_0 FROM SmallB AS g_0) AS v_0 ORDER BY v_0.c_0", c.toString()); }
@Test public void testProcedureBatching() throws Exception { ProcedureExecution exec = new FakeProcedureExecution(2, 1); // this has two result set columns and 1 out parameter int total_columns = 3; StoredProcedure command = (StoredProcedure)helpGetCommand("{call pm2.spTest8(?)}", EXAMPLE_BQT); //$NON-NLS-1$ command.getInputParameters().get(0).setExpression(new Constant(1)); Call proc = new LanguageBridgeFactory(EXAMPLE_BQT).translate(command); ProcedureBatchHandler pbh = new ProcedureBatchHandler(proc, exec); assertEquals(total_columns, pbh.padRow(Arrays.asList(null, null)).size()); List params = pbh.getParameterRow(); assertEquals(total_columns, params.size()); // check the parameter value assertEquals(Integer.valueOf(0), params.get(2)); try { pbh.padRow(Arrays.asList(1)); fail("Expected exception from resultset mismatch"); //$NON-NLS-1$ } catch (TranslatorException err) { assertEquals( "TEIID30479 Could not process stored procedure results for EXEC spTest8(1). Expected 2 result set columns, but was 1. Please update your models to allow for stored procedure results batching.", err.getMessage()); //$NON-NLS-1$ } }
@Test public void testVarArgs1() throws Exception { String ddl = "create foreign procedure proc (VARIADIC z integer) returns (x string);\n"; TransformationMetadata tm = createMetadata(ddl); String sql = "call proc ()"; //$NON-NLS-1$ StoredProcedure sp = (StoredProcedure) TestResolver.helpResolve(sql, tm); assertEquals("EXEC proc()", sp.toString()); assertEquals(new Array(DataTypeManager.DefaultDataClasses.INTEGER, new ArrayList<Expression>(0)), sp.getParameter(1).getExpression()); sp = (StoredProcedure) QueryRewriter.evaluateAndRewrite(sp, new Evaluator(null, null, null), null, tm); LanguageBridgeFactory lbf = new LanguageBridgeFactory(tm); Call call = (Call)lbf.translate(sp); assertEquals("EXEC proc()", call.toString()); //we pass to the translator level flattened, so no argument assertEquals(0, call.getArguments().size()); }
this.securityContext.setRuntimeMetadata(this.queryMetadata); this.securityContext.setTransactional(requestMsg.isTransactional()); LanguageBridgeFactory factory = new LanguageBridgeFactory(this.queryMetadata); CommandContext context = requestMsg.getCommandContext(); try {
this.securityContext.setRuntimeMetadata(this.queryMetadata); this.securityContext.setTransactional(requestMsg.isTransactional()); LanguageBridgeFactory factory = new LanguageBridgeFactory(this.queryMetadata); CommandContext context = requestMsg.getCommandContext(); try {
this.securityContext.setRuntimeMetadata(this.queryMetadata); this.securityContext.setTransactional(requestMsg.isTransactional()); LanguageBridgeFactory factory = new LanguageBridgeFactory(this.queryMetadata); try { SourceCapabilities capabilities = manager.getCapabilities();
@Test public void testExpansion1() throws Exception { SetCriteria inCriteria = helpExample(false); LanguageBridgeFactory lbf = new LanguageBridgeFactory(RealMetadataFactory.example1Cached()); lbf.setMaxInPredicateSize(2); AndOr or = (AndOr) lbf.translate(inCriteria); assertEquals(Operator.OR, or.getOperator()); assertEquals(2, ((In)or.getRightCondition()).getRightExpressions().size()); inCriteria.setNegated(true); AndOr and = (AndOr) lbf.translate(inCriteria); assertEquals(Operator.AND, and.getOperator()); assertEquals("300 NOT IN (100, 200) AND 300 NOT IN (300, 400)", and.toString()); }
@Test public void testExpansion() throws Exception { SetCriteria inCriteria = helpExample(false); LanguageBridgeFactory lbf = new LanguageBridgeFactory(RealMetadataFactory.example1Cached()); lbf.setConvertIn(true); AndOr or = (AndOr) lbf.translate(inCriteria); assertEquals(Operator.OR, or.getOperator()); inCriteria.setNegated(true); AndOr and = (AndOr) lbf.translate(inCriteria); assertEquals(Operator.AND, and.getOperator()); }
@Test public void testVarArgs() throws Exception { String ddl = "create foreign procedure proc (x integer, VARIADIC z integer) returns (x string);\n"; TransformationMetadata tm = createMetadata(ddl); String sql = "call proc (1, 2, 3)"; //$NON-NLS-1$ StoredProcedure sp = (StoredProcedure) TestResolver.helpResolve(sql, tm); assertEquals("EXEC proc(1, 2, 3)", sp.toString()); assertEquals(new Constant(1), sp.getParameter(1).getExpression()); assertEquals(new Array(DataTypeManager.DefaultDataClasses.INTEGER, Arrays.asList((Expression)new Constant(2), new Constant(3))), sp.getParameter(2).getExpression()); assertEquals(SPParameter.RESULT_SET, sp.getParameter(3).getParameterType()); sql = "call proc (1)"; //$NON-NLS-1$ sp = (StoredProcedure) TestResolver.helpResolve(sql, tm); assertEquals("EXEC proc(1)", sp.toString()); assertEquals(new Array(DataTypeManager.DefaultDataClasses.INTEGER, new ArrayList<Expression>(0)), sp.getParameter(2).getExpression()); sp = (StoredProcedure) QueryRewriter.evaluateAndRewrite(sp, new Evaluator(null, null, null), null, tm); LanguageBridgeFactory lbf = new LanguageBridgeFactory(tm); Call call = (Call)lbf.translate(sp); assertEquals("EXEC proc(1)", call.toString()); sql = "call proc (1, (2, 3))"; //$NON-NLS-1$ sp = (StoredProcedure) TestResolver.helpResolve(sql, tm); assertEquals("EXEC proc(1, (2, 3))", sp.toString()); assertEquals(new Constant(1), sp.getParameter(1).getExpression()); assertEquals(new Array(DataTypeManager.DefaultDataClasses.INTEGER, Arrays.asList((Expression)new Constant(2), new Constant(3))), sp.getParameter(2).getExpression()); assertEquals(SPParameter.RESULT_SET, sp.getParameter(3).getParameterType()); }