private Mode getMode(CreateProcedureCommand parentProcCommand, CommandStatement cmdStmt, Command command) { if (!command.returnsResultSet()&&!(command instanceof StoredProcedure)) { return Mode.UPDATE; } if (parentProcCommand.returnsResultSet()&&cmdStmt.isReturnable()&&cmdStmt.getCommand().returnsResultSet()) { return Mode.HOLD; } return Mode.NOHOLD; }
private Mode getMode(CreateProcedureCommand parentProcCommand, CommandStatement cmdStmt, Command command) { if (!command.returnsResultSet()&&!(command instanceof StoredProcedure)) { return Mode.UPDATE; } if (parentProcCommand.returnsResultSet()&&cmdStmt.isReturnable()&&cmdStmt.getCommand().returnsResultSet()) { return Mode.HOLD; } return Mode.NOHOLD; }
private Mode getMode(CreateProcedureCommand parentProcCommand, CommandStatement cmdStmt, Command command) { if (!command.returnsResultSet()&&!(command instanceof StoredProcedure)) { return Mode.UPDATE; } if (parentProcCommand.returnsResultSet()&&cmdStmt.isReturnable()&&cmdStmt.getCommand().returnsResultSet()) { return Mode.HOLD; } return Mode.NOHOLD; }
@Test public void testAnonBlockNoResult() throws Exception { String sql = "begin select 1 as something without return; end"; //$NON-NLS-1$ CreateProcedureCommand sp = (CreateProcedureCommand) TestResolver.helpResolve(sql, RealMetadataFactory.example1Cached()); assertEquals(0, sp.getProjectedSymbols().size()); assertFalse(sp.returnsResultSet()); }
@Test public void testAnonBlock() throws Exception { String sql = "begin select 1 as something; end"; //$NON-NLS-1$ CreateProcedureCommand sp = (CreateProcedureCommand) TestResolver.helpResolve(sql, RealMetadataFactory.example1Cached()); assertEquals(1, sp.getResultSetColumns().size()); assertEquals("something", Symbol.getName(sp.getResultSetColumns().get(0))); assertEquals(1, sp.getProjectedSymbols().size()); assertTrue(sp.returnsResultSet()); }
@Test public void testReturnAndResultSet() throws Exception { String ddl = "CREATE FOREIGN PROCEDURE proc (OUT param STRING RESULT) RETURNS TABLE (a INTEGER, b STRING);"; //$NON-NLS-1$ TransformationMetadata tm = RealMetadataFactory.fromDDL(ddl, "x", "y"); StoredProcedure sp = (StoredProcedure) TestResolver.helpResolve("exec proc()", tm); assertEquals(2, sp.getProjectedSymbols().size()); assertEquals("y.proc.b", sp.getProjectedSymbols().get(1).toString()); assertTrue(sp.returnsResultSet()); sp.setCallableStatement(true); assertEquals(3, sp.getProjectedSymbols().size()); assertEquals("y.proc.param", sp.getProjectedSymbols().get(2).toString()); CreateProcedureCommand cpc = (CreateProcedureCommand) TestResolver.helpResolve("begin exec proc(); end", tm); assertEquals(2, cpc.getProjectedSymbols().size()); assertEquals(2, ((CommandStatement)cpc.getBlock().getStatements().get(0)).getCommand().getProjectedSymbols().size()); assertTrue(cpc.returnsResultSet()); TestValidator.helpValidate("begin declare string var; var = exec proc(); select var; end", new String[] {"SELECT var;"}, tm); }
instruction = new ExecDynamicSqlInstruction(parentProcCommand,((DynamicCommand)command), metadata, idGenerator, capFinder, ((DynamicCommand)command).getIntoGroup() == null && cmdStmt.isReturnable() && parentProcCommand.returnsResultSet()); }else{ CreateCursorResultSetInstruction cursor = new CreateCursorResultSetInstruction(null, commandPlan, getMode(parentProcCommand, cmdStmt, command));
instruction = new ExecDynamicSqlInstruction(parentProcCommand,((DynamicCommand)command), metadata, idGenerator, capFinder, ((DynamicCommand)command).getIntoGroup() == null && cmdStmt.isReturnable() && parentProcCommand.returnsResultSet()); }else{ CreateCursorResultSetInstruction cursor = new CreateCursorResultSetInstruction(null, commandPlan, getMode(parentProcCommand, cmdStmt, command));
instruction = new ExecDynamicSqlInstruction(parentProcCommand,((DynamicCommand)command), metadata, idGenerator, capFinder, ((DynamicCommand)command).getIntoGroup() == null && cmdStmt.isReturnable() && parentProcCommand.returnsResultSet()); }else{ CreateCursorResultSetInstruction cursor = new CreateCursorResultSetInstruction(null, commandPlan, getMode(parentProcCommand, cmdStmt, command));