@Test public void testCreateAfterImplicitTempTable() throws Exception { StringBuffer proc = new StringBuffer("FOR EACH ROW") //$NON-NLS-1$ .append("\nBEGIN") //$NON-NLS-1$ .append("\n select e1 into #temp from pm1.g1;") //$NON-NLS-1$ .append("\n create local temporary table #temp (e1 string);") //$NON-NLS-1$ .append("\nEND"); //$NON-NLS-1$ String userUpdateStr = "UPDATE vm1.g1 SET e1='x'"; //$NON-NLS-1$ helpResolveUpdateProcedure(proc.toString(), userUpdateStr, Table.TriggerEvent.UPDATE); }
@Test public void testDynamicStatement() throws Exception { String userUpdateStr = "UPDATE vm1.g1 SET e1='x'"; //$NON-NLS-1$ StringBuffer procedure = new StringBuffer("FOR EACH ROW ") //$NON-NLS-1$ .append("BEGIN\n") //$NON-NLS-1$ .append("execute string 'SELECT e1, e2, e3, e4 FROM pm1.g2';\n") //$NON-NLS-1$ .append("END\n"); //$NON-NLS-1$ helpResolveUpdateProcedure(procedure.toString(), userUpdateStr, Table.TriggerEvent.UPDATE); }
@Test public void testProcedureCreate() throws Exception { StringBuffer proc = new StringBuffer("FOR EACH ROW") //$NON-NLS-1$ .append("\nBEGIN") //$NON-NLS-1$ .append("\n create local temporary table t1 (e1 string);") //$NON-NLS-1$ .append("\n select e1 from t1;") //$NON-NLS-1$ .append("\n create local temporary table t1 (e1 string, e2 integer);") //$NON-NLS-1$ .append("\n select e2 from t1;") //$NON-NLS-1$ .append("\nEND"); //$NON-NLS-1$ String userUpdateStr = "UPDATE vm1.g1 SET e1='x'"; //$NON-NLS-1$ helpResolveUpdateProcedure(proc.toString(), userUpdateStr, Table.TriggerEvent.UPDATE); }
@Test public void testProcedureCreateDrop1() throws Exception { StringBuffer proc = new StringBuffer("FOR EACH ROW") //$NON-NLS-1$ .append("\nBEGIN") //$NON-NLS-1$ .append("\n create local temporary table t1 (e1 string);") //$NON-NLS-1$ .append("\n drop table t1;") //$NON-NLS-1$ .append("\nEND"); //$NON-NLS-1$ String userUpdateStr = "UPDATE vm1.g1 SET e1='x'"; //$NON-NLS-1$ helpResolveUpdateProcedure(proc.toString(), userUpdateStr, Table.TriggerEvent.UPDATE); }
@Test public void testInsertAfterCreate() throws Exception { StringBuffer proc = new StringBuffer("FOR EACH ROW") //$NON-NLS-1$ .append("\nBEGIN") //$NON-NLS-1$ .append("\n create local temporary table #temp (e1 string, e2 string);") //$NON-NLS-1$ .append("\n insert into #temp (e1) values ('a');") //$NON-NLS-1$ .append("\nEND"); //$NON-NLS-1$ String userUpdateStr = "UPDATE vm1.g1 SET e1='x'"; //$NON-NLS-1$ helpResolveUpdateProcedure(proc.toString(), userUpdateStr, Table.TriggerEvent.UPDATE); }
@Test public void testCreateUpdateProcedure26() throws Exception { String procedure = "FOR EACH ROW "; //$NON-NLS-1$ procedure = procedure + "BEGIN\n"; //$NON-NLS-1$ procedure = procedure + "DECLARE integer VARIABLES.var1;\n"; //$NON-NLS-1$ procedure = procedure + "END\n"; //$NON-NLS-1$ String userUpdateStr = "UPDATE vm1.g1 SET e1='x'"; //$NON-NLS-1$ helpResolveUpdateProcedure(procedure, userUpdateStr, Table.TriggerEvent.UPDATE); }
@Test public void testCreateUpdateProcedure1() throws Exception { String procedure = "FOR EACH ROW "; //$NON-NLS-1$ procedure = procedure + "BEGIN\n"; //$NON-NLS-1$ procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$ procedure = procedure + "var1 = Select pm1.g1.e2 from pm1.g1;\n"; //$NON-NLS-1$ procedure = procedure + "UPDATE pm1.g1 SET pm1.g1.e1 = 1, pm1.g1.e2 = var1;\n"; //$NON-NLS-1$ procedure = procedure + "END\n"; //$NON-NLS-1$ String userUpdateStr = "UPDATE vm1.g1 SET e1=1"; //$NON-NLS-1$ helpResolveUpdateProcedure(procedure, userUpdateStr, Table.TriggerEvent.UPDATE); }
@Test public void testCreateUpdateProcedure32() throws Exception { String procedure = "FOR EACH ROW "; //$NON-NLS-1$ procedure = procedure + "BEGIN\n"; //$NON-NLS-1$ procedure = procedure + "Declare integer var1;\n"; //$NON-NLS-1$ procedure = procedure + "Select var1 from pm1.g1;\n"; //$NON-NLS-1$ procedure = procedure + "END\n"; //$NON-NLS-1$ String userUpdateStr = "UPDATE vm1.g1 SET e1='x'"; //$NON-NLS-1$ helpResolveUpdateProcedure(procedure, userUpdateStr, Table.TriggerEvent.UPDATE); }
@Test public void testCreateUpdateProcedure54() throws Exception { String procedure = "FOR EACH ROW "; //$NON-NLS-1$ procedure = procedure + "BEGIN\n"; //$NON-NLS-1$ procedure = procedure + "DECLARE string var1;\n"; //$NON-NLS-1$ procedure = procedure + "var1 = 1+1;"; //$NON-NLS-1$ procedure = procedure + "END\n"; //$NON-NLS-1$ String userUpdateStr = "UPDATE vm1.g1 SET e1='x'"; //$NON-NLS-1$ helpResolveUpdateProcedure(procedure, userUpdateStr, Table.TriggerEvent.UPDATE); }
@Test public void testDynamicIntoInProc() throws Exception { String userUpdateStr = "UPDATE vm1.g1 SET e1='x'"; //$NON-NLS-1$ StringBuffer procedure = new StringBuffer("FOR EACH ROW ") //$NON-NLS-1$ .append("BEGIN\n") //$NON-NLS-1$ .append("execute string 'SELECT e1, e2, e3, e4 FROM pm1.g2' as e1 string, e2 string, e3 string, e4 string INTO #myTempTable;\n") //$NON-NLS-1$ .append("select e1 from #myTempTable;\n") //$NON-NLS-1$ .append("END\n"); //$NON-NLS-1$ helpResolveUpdateProcedure(procedure.toString(), userUpdateStr, Table.TriggerEvent.UPDATE); }
@Test public void testCreateUpdateProcedure3() throws Exception { String procedure = "FOR EACH ROW "; //$NON-NLS-1$ procedure = procedure + "BEGIN\n"; //$NON-NLS-1$ procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$ procedure = procedure + "if(var1 =1)\n"; //$NON-NLS-1$ procedure = procedure + "BEGIN\n"; //$NON-NLS-1$ procedure = procedure + "END\n"; //$NON-NLS-1$ procedure = procedure + "END\n"; //$NON-NLS-1$ String userUpdateStr = "UPDATE vm1.g1 SET e1='x'"; //$NON-NLS-1$ helpResolveUpdateProcedure(procedure, userUpdateStr, Table.TriggerEvent.UPDATE); }
@Test public void testVariableInInsert3() throws Exception { String procedure = "FOR EACH ROW "; //$NON-NLS-1$ procedure = procedure + "BEGIN\n"; //$NON-NLS-1$ procedure = procedure + "DECLARE integer e2;\n"; //$NON-NLS-1$ procedure = procedure + "Insert into pm1.g1 (e2) values (1);\n"; //$NON-NLS-1$ procedure = procedure + "END\n"; //$NON-NLS-1$ String userQuery = "UPDATE vm1.g3 SET x='x' where e3= 1"; //$NON-NLS-1$ helpResolveUpdateProcedure(procedure, userQuery, Table.TriggerEvent.UPDATE); }
@Test public void testSelectIntoInProcNoFrom() throws Exception { StringBuffer procedure = new StringBuffer("FOR EACH ROW ") //$NON-NLS-1$ .append("BEGIN\n") //$NON-NLS-1$ .append("SELECT 'a', 19, {b'true'}, 13.999 INTO pm1.g1;\n") //$NON-NLS-1$ .append("END\n"); //$NON-NLS-1$ String userUpdateStr = "UPDATE vm1.g1 SET e1='x'"; //$NON-NLS-1$ helpResolveUpdateProcedure(procedure.toString(), userUpdateStr, Table.TriggerEvent.UPDATE); procedure = new StringBuffer("FOR EACH ROW ") //$NON-NLS-1$ .append("BEGIN\n") //$NON-NLS-1$ .append("SELECT 'a', 19, {b'true'}, 13.999 INTO #myTempTable;\n") //$NON-NLS-1$ .append("END\n"); //$NON-NLS-1$ helpResolveUpdateProcedure(procedure.toString(), userUpdateStr, Table.TriggerEvent.UPDATE); }
@Test public void testSelectIntoInProc() throws Exception { StringBuffer procedure = new StringBuffer("FOR EACH ROW ") //$NON-NLS-1$ .append("BEGIN\n") //$NON-NLS-1$ .append("SELECT e1, e2, e3, e4 INTO pm1.g1 FROM pm1.g2;\n") //$NON-NLS-1$ .append("END\n"); //$NON-NLS-1$ String userUpdateStr = "UPDATE vm1.g1 SET e1='x'"; //$NON-NLS-1$ helpResolveUpdateProcedure(procedure.toString(), userUpdateStr, Table.TriggerEvent.UPDATE); procedure = new StringBuffer("FOR EACH ROW ") //$NON-NLS-1$ .append("BEGIN\n") //$NON-NLS-1$ .append("SELECT e1, e2, e3, e4 INTO #myTempTable FROM pm1.g2;\n") //$NON-NLS-1$ .append("END\n"); //$NON-NLS-1$ helpResolveUpdateProcedure(procedure.toString(), userUpdateStr, Table.TriggerEvent.UPDATE); }
@Test(expected=QueryResolverException.class) public void testBlockResolving() throws Exception { StringBuffer proc = new StringBuffer("FOR EACH ROW") //$NON-NLS-1$ .append("\nBEGIN") //$NON-NLS-1$ //note that this declare takes presedense over the proc INPUTS.e1 and CHANGING.e1 variables .append("\n declare integer e1 = 1;") //$NON-NLS-1$ .append("\n BEGIN") //$NON-NLS-1$ //inside the scope of the loop, an unqualified e1 should resolve to the loop variable group .append("\n variables.e1 = e2;") //$NON-NLS-1$ .append("\n END") //$NON-NLS-1$ .append("\nEND"); //$NON-NLS-1$ String userUpdateStr = "UPDATE vm1.g1 SET e1='x'"; //$NON-NLS-1$ helpResolveUpdateProcedure(proc.toString(), userUpdateStr, Table.TriggerEvent.UPDATE); }
@Test public void testCreateUpdateProcedure7() throws Exception { String procedure = "FOR EACH ROW "; //$NON-NLS-1$ procedure = procedure + "BEGIN\n"; //$NON-NLS-1$ procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$ procedure = procedure + "if(var1 =1)\n"; //$NON-NLS-1$ procedure = procedure + "BEGIN\n"; //$NON-NLS-1$ procedure = procedure + "DECLARE boolean var2;\n"; //$NON-NLS-1$ procedure = procedure + "Select pm1.g1.e2 from pm1.g1 where var1 = pm1.g1.e1;\n"; //$NON-NLS-1$ procedure = procedure + "END\n"; //$NON-NLS-1$ procedure = procedure + "END\n"; //$NON-NLS-1$ String userUpdateStr = "UPDATE vm1.g1 SET e1='x'"; //$NON-NLS-1$ helpResolveUpdateProcedure(procedure, userUpdateStr, Table.TriggerEvent.UPDATE); }
private void helpFailUpdateProcedure(String procedure, String userUpdateStr, Table.TriggerEvent procedureType, String msg) { // resolve try { helpResolveUpdateProcedure(procedure, userUpdateStr, procedureType); fail("Expected a QueryResolverException but got none."); //$NON-NLS-1$ } catch(QueryResolverException ex) { if (msg != null) { assertEquals(msg, ex.getMessage()); } } catch (TeiidComponentException e) { throw new RuntimeException(e); } catch (QueryParserException e) { throw new RuntimeException(e); } }
Command command = helpResolveUpdateProcedure(proc.toString(), userUpdateStr, Table.TriggerEvent.UPDATE); Map<String, TempMetadataID> tempIDs = command.getTemporaryMetadata().getData(); assertNotNull(tempIDs);
TriggerAction command = helpResolveUpdateProcedure(proc.toString(), userUpdateStr, Table.TriggerEvent.UPDATE);