Hi Shreyas, Sorry for the delay with this patch... Once I catup to all the previous discussions about this patch, I will commit it.
Of course, if any other committer is ready to commit, that would be good too. Satheesh Shreyas Kaushik wrote: > If everybody is fine, can someone commit this? > > ~Shreyas > > Shreyas Kaushik wrote: > >> Hi Mamta, >> As I said in one of earlier mails. >> > I still feel the insatnceof checking is necessary because I >> want to get >> > the correlation name from the FromBaseTable node and not a >> > FromSubQuery >> > node. >> >> I would not want to get/assign a correlation name where it would be >> meaningless. >> >> ~ Shreyas >> >> Mamta Satoor wrote: >> >>> Hi Shreyas, >>> >>> I definitely agree that just changing sqlgrammar.jj is not enough. >>> There are indeed changes required in DeleteNode. I am just curious >>> though if it will be sufficient to just have fbt.correlationName = >>> targetTable.correlationName; in DeleteNode. You sure know this code >>> more than me and chances are we need the if statements and I am >>> trying to understand the rationale behind it. >>> >>> thanks for your patience, >>> Mamta >>> >>> >>> On 6/2/05, *Shreyas Kaushik* <[EMAIL PROTECTED] >>> <mailto:[EMAIL PROTECTED]>> wrote: >>> >>> Hi Mamta, >>> >>> Couple of tests in refactions1.sql were failing. There is an >>> earlier >>> mail I sent out that had the failures when I just did the >>> changes to >>> sqlgrammar.jj. >>> I will forward that mail to you. >>> >>> thanks >>> Shreyas >>> >>> Mamta Satoor wrote: >>> >>> > Hi Shreyas, >>> > >>> > Can you please give an example delete sql where not having >>> instanceof >>> > check will cause a problem? >>> > >>> > thanks, >>> > Mamta >>> > >>> > >>> > On 6/2/05, *Shreyas Kaushik* <[EMAIL PROTECTED] >>> <mailto:[EMAIL PROTECTED]> >>> > <mailto: [EMAIL PROTECTED] >>> <mailto:[EMAIL PROTECTED]>>> wrote: >>> > >>> > Hi Mamta, >>> > >>> > I still feel th insatnceof checking is necessary because I >>> want to get >>> > the correlation name from the FroomBaseTable node and not a >>> > FromSubQuery >>> > node. >>> > >>> > thanks >>> > Shreyas >>> > >>> > Mamta Satoor wrote: >>> > >>> > > Hi Shreyas, >>> > > >>> > > In order to avoid one assignment, the code is having to >>> > instantiate a >>> > > new object and do an if check on it and then do the >>> assignment. >>> > I am >>> > > not sure if we should go through all this extra code >>> when an >>> > > additional comment can describe what is the assignment for. >>> > > >>> > > Also, the code checks for FromVTI because it needs to do >>> special >>> > > coding for FromVTI. But, to me, it looks like that is >>> not the >>> > case for >>> > > the check that you have. >>> > > >>> > > Does anyone else on the list have comments on the 2 if >>> statements in >>> > > DeleteNode? >>> > > >>> > > thanks, >>> > > Mamta >>> > > On 6/1/05, *Shreyas Kaushik* < [EMAIL PROTECTED] >>> <mailto:[EMAIL PROTECTED]> >>> > <mailto:[EMAIL PROTECTED] >>> <mailto:[EMAIL PROTECTED]>> >>> > > <mailto: [EMAIL PROTECTED] >>> <mailto:[EMAIL PROTECTED]> >>> > <mailto:[EMAIL PROTECTED] >>> <mailto:[EMAIL PROTECTED]>>>> wrote: >>> > > >>> > > Hi Mamta, >>> > > >>> > > Thanks for your comments. Please see inline. >>> > > >>> > > ~Shreyas >>> > > >>> > > Mamta Satoor wrote: >>> > > >>> > > > Hi Shreyas, >>> > > > >>> > > > I reviewed your code briefly and it looks good. >>> Couple >>> > comments >>> > > > >>> > > > 1)In DeleteNode.java, you check if correlationName >>> is not null >>> > > (copied >>> > > > your code below for reference) >>> > > >>+ if(targetTable instanceof >>> > FromBaseTable) { >>> > > >>+ String correlationName; >>> > > >>+ correlationName = >>> > > > ((FromBaseTable)targetTable).correlationName; >>> > > >>+ if(correlationName != >>> null) >>> > > >>+ >>> fbt.correlationName = >>> > > correlationName; >>> > > >>+ } >>> > > > >>> > > > Is that check necessary? Is it possible to replace >>> the code >>> > > above with >>> > > > following? >>> > > >>+ if(targetTable instanceof >>> > FromBaseTable) >>> > > >>+ fbt.correlationName = >>> > > > ((FromBaseTable)targetTable).correlationName ; >>> > > >>> > > Yes the check is necessary, if a normal delete is >>> called >>> > without the >>> > > correlation name it will be null , in "fbt" also it >>> will be >>> > null. By >>> > > checking I am avoiding an assignment. >>> > > >>> > > > >>> > > > Taking one step further, is it possible to also >>> skip the >>> > check for >>> > > > instanceof FromBaseTable and just have following >>> assignment? >>> > > >>+ fbt.correlationName = >>> > > > targetTable.correlationName; >>> > > > I have only briefly looked at the changes and it is >>> possible >>> > > that we do in >>> > > >>> > > Yes this check is necessary as the FromTable node in >>> the method >>> > > deleteBody() in SQLParser.java is an instance of a >>> > FromBaseTable. The >>> > > code already there checks whether targetTable >>> > > is an instance of FromVTI maintaining consistency this >>> > should also >>> > > check >>> > > for the instance of FromBaseTable. >>> > > >>> > > > deed need the checks you have but I thought I would >>> check >>> > in any >>> > > case. >>> > > > >>> > > > 2)Rather than a completely new sql test file, I >>> think you >>> > could use >>> > > > existing lang/derived.sql which tests correlation >>> names as >>> > well. >>> > > >>> > > Ok I can do this. >>> > > >>> > > > >>> > > > 3)You might need to generate a new patch(because >>> it has >>> > been quite >>> > > > sometime since you submitted the patch), rerun the >>> tests >>> > and submit >>> > > > the patch based on latest codeline. >>> > > >>> > > Sure. >>> > > >>> > > > >>> > > > You sure are becoming correlation name expert :) >>> > > >>> > > I am looking into Derby-84 as well ;-) >>> > > >>> > > > Mamta >>> > > > >>> > > > On 6/1/05, *Shreyas Kaushik* < >>> [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> >>> > <mailto:[EMAIL PROTECTED] >>> <mailto:[EMAIL PROTECTED]>> >>> > > <mailto:[EMAIL PROTECTED] >>> <mailto:[EMAIL PROTECTED]> >>> > <mailto:[EMAIL PROTECTED] >>> <mailto:[EMAIL PROTECTED]>>> >>> > > > <mailto: [EMAIL PROTECTED] >>> <mailto:[EMAIL PROTECTED]> >>> > <mailto:[EMAIL PROTECTED] >>> <mailto:[EMAIL PROTECTED]>> >>> > > <mailto: [EMAIL PROTECTED] >>> <mailto:[EMAIL PROTECTED]> >>> > <mailto:[EMAIL PROTECTED] >>> <mailto:[EMAIL PROTECTED]>>>>> wrote: >>> > > > >>> > > > Did anyone get a chance to review this? >>> > > > >>> > > > thanks >>> > > > Shreyas >>> > > > >>> > > > Shreyas Kaushik wrote: >>> > > > >>> > > > > Attached is the latest patch. Ran derbylang >>> suite >>> > successfully >>> > > > without >>> > > > > any failures. >>> > > > > >>> > > > > ~ Shreyas >>> > > > > >>> > > > > Satheesh Bandaram wrote: >>> > > > > >>> > > > >> Is this patch ready for review? Still any >>> pending >>> > issues >>> > > here? >>> > > > >> >>> > > > >> Satheesh >>> > > > >> >>> > > > >> Shreyas Kaushik wrote: >>> > > > >> >>> > > > >> >>> > > > >> >>> > > > >>> Hi Dan, >>> > > > >>> >>> > > > >>> If you are ok with this, I can add the >>> comments to >>> > the >>> > > patch >>> > > > and send >>> > > > >>> it out on the alias. >>> > > > >>> >>> > > > >>> thanks >>> > > > >>> Shreyas >>> > > > >>> >>> > > > >>> Shreyas Kaushik wrote: >>> > > > >>> >>> > > > >>> >>> > > > >>> >>> > > > >>>> Ok. Thanks for your suggestions I will do >>> it. >>> > > > >>>> >>> > > > >>>> The idea behibd adding that peice of code >>> is: >>> > > > >>>> >>> > > > >>>> The *delete from* did not have support for >>> handling >>> > > correlation >>> > > > >>>> names. So when we are creating a fresh >>> > ResultColumnList >>> > > > >>>> and the FromBaseTable we need to pass the >>> correlation >>> > > name to >>> > > > this >>> > > > >>>> newly created FromBaseTable object from the >>> target >>> > > table where it >>> > > > >>>> will stored. >>> > > > >>>> >>> > > > >>>> thanks >>> > > > >>>> Shreyas >>> > > > >>>> >>> > > > >>>> Daniel John Debrunner wrote: >>> > > > >>>> >>> > > > >>>> >>> > > > >>>> >>> > > > >>>>> Shreyas Kaushik wrote: >>> > > > >>>>> >>> > > > >>>>> >>> > > > >>>>> >>> > > > >>>>> >>> > > > >>>>>> Did anyone gfo through this? >>> > > > >>>>>> >>> > > > >>>>>> >>> > > > >>>>> >>> > > > >>>>> >>> > > > >>>>> I looked briefly. Do you have an >>> explanation of your >>> > > changes? >>> > > > >>>>> Adding comments to the code you added in >>> > DeleteNode, >>> > > > explaining what >>> > > > >>>>> exactly that new block is doing would be >>> really >>> > useful. >>> > > > >>>>> >>> > > > >>>>> I would say the chance of a fix being >>> committed >>> > quickly >>> > > > increases >>> > > > >>>>> significantly if it is well explained >>> and well >>> > commented. >>> > > > The code >>> > > > >>>>> changes really need to stand alone, ie. be >>> > understandable >>> > > > through >>> > > > >>>>> comments, as anyone looking through the >>> code in >>> > the future >>> > > > will not >>> > > > >>>>> have >>> > > > >>>>> a link to any e-mail discussion to help >>> them along. >>> > > Though a >>> > > > >>>>> summary of >>> > > > >>>>> the changes with the contribution can be >>> useful. >>> > Such a >>> > > > summary is >>> > > > >>>>> also >>> > > > >>>>> a useful commit comment for the svn >>> history of >>> > changes >>> > > to the >>> > > > >>>>> codeline. >>> > > > >>>>> >>> > > > >>>>> Writing code comments is also very helpful >>> to the >>> > > writer of >>> > > > the code, >>> > > > >>>>> helps to cement the mental ideas into >>> code. A good >>> > > practise >>> > > > is to >>> > > > >>>>> write >>> > > > >>>>> the comments first and then the code. >>> > > > >>>>> >>> > > > >>>>> Dan. >>> > > > >>>>> >>> > > > >>>>> >>> > > > >>>>> >>> > > > >>>>> >>> > > > >>>>> >>> > > > >>>>>>>>> Index: >>> > > > >>>>>>>>> >>> > > > >>> > java/engine/org/apache/derby/impl/sql/compile/DeleteNode.java >>> > > > >>>>>>>>> >>> > > > >>> > > >>> > >>> =================================================================== >>> > > > >>>>>>>>> >>> > > > >>>>>>>>> --- >>> > > > >>>>>>>>> >>> > > > >>> > java/engine/org/apache/derby/impl/sql/compile/DeleteNode.java >>> > > > >>>>>>>>> (revision 161449) >>> > > > >>>>>>>>> +++ >>> > > > >>>>>>>>> >>> > > > >>> > java/engine/org/apache/derby/impl/sql/compile/DeleteNode.java >>> > > > >>>>>>>>> (working copy) >>> > > > >>>>>>>>> @@ -241,6 +241,13 @@ >>> > > > >>>>>>>>> resultColumnList >>> = new >>> > > > ResultColumnList(); >>> > > > >>>>>>>>> >>> > > > >>>>>>>>> FromBaseTable fbt = >>> > > > >>>>>>>>> getResultColumnList(resultColumnList); >>> > > > >>>>>>>>> + >>> > > > >>>>>>>>> + if(targetTable >>> > instanceof >>> > > > >>>>>>>>> FromBaseTable) { >>> > > > >>>>>>>>> + String >>> > correlationName; >>> > > > >>>>>>>>> >>> + correlationName = >>> > > > >>>>>>>>> >>> ((FromBaseTable)targetTable).correlationName; >>> > > > >>>>>>>>> >>> > + if(correlationName != >>> > > null) >>> > > > >>>>>>>>> >>> > + fbt.correlationName = >>> > > > >>>>>>>>> correlationName; >>> > > > >>>>>>>>> + } >>> > > > >>>>>>>>> >>> > > > >>>>>>>>> readColsBitSet = >>> > > > getReadMap(dataDictionary, >>> > > > >>>>>>>>> >>> > > > >>>>>>>>> targetTableDescriptor); >>> > > > >>>>>>>>> >>> > > > >>>>>>>> >>> > > > >>>>>>>> >>> > > > >>>>>>> >>> > > > >>>>> >>> > > > >>>>> >>> > > > >>>>> >>> > > > >>>>> >>> > > > >>>>> >>> > > > >>>>> >>> > > > >>>>> >>> > > > >>>> >>> > > > >>> >>> > > > >>> >>> > > > >> >>> > > > >> >>> > > > >> >>> > > > >> >>> > > > >>> > > >>> > >>> >------------------------------------------------------------------------ >>> >>> >>> > > >>> > > > > >>> > > > >Index: >>> > > >>> java/engine/org/apache/derby/impl/sql/compile/DeleteNode.java >>> > > > >>> > > >>> > >>> >=================================================================== >>> > > > >--- >>> > > > >>> > > >>> > >>> java/engine/org/apache/derby/impl/sql/compile/DeleteNode.java >>> (revision >>> >>> > >>> > > >>> > > > 178358) >>> > > > >+++ >>> > > > >>> > > >>> > >>> java/engine/org/apache/derby/impl/sql/compile/DeleteNode.java >>> (working >>> >>> > > > copy) >>> > > > >@@ -241,6 +241,18 @@ >>> > > > > resultColumnList = new >>> > > ResultColumnList(); >>> > > > > >>> > > > > FromBaseTable fbt = >>> > > > getResultColumnList(resultColumnList); >>> > > > >+ >>> > > > >+ /* When we are >>> creating a fresh >>> > > > ResultColumnList >>> > > > >+ * and the >>> FromBaseTable we >>> > need >>> > > to pass >>> > > > the correlation name >>> > > > >+ * to this newly >>> created >>> > FromBaseTable >>> > > > object from the target table >>> > > > >+ * where it will be >>> stored. >>> > > > >+ */ >>> > > > >+ if(targetTable >>> instanceof >>> > > FromBaseTable) { >>> > > > >+ String >>> correlationName; >>> > > > >+ correlationName = >>> > > > ((FromBaseTable)targetTable).correlationName; >>> > > > >+ if(correlationName >>> != null) >>> > > > >+ >>> fbt.correlationName = >>> > > > correlationName; >>> > > > >+ } >>> > > > > >>> > > > > readColsBitSet = >>> > > getReadMap(dataDictionary, >>> > > > > >>> > > > targetTableDescriptor); >>> > > > >Index: >>> > > >>> java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj >>> > > > >>> > > >>> > >>> >=================================================================== >>> > > > >--- >>> > > > >>> > > >>> > >>> java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj >>> (revision >>> > > > 178358) >>> > > > >+++ >>> > > > >>> > > >>> > >>> java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj >>> (working >>> > > >>> > > > copy) >>> > > > >@@ -2582,16 +2582,27 @@ >>> > > > > QueryTreeNode retval; >>> > > > > Properties targetProperties = null; >>> > > > > Token whereToken = null; >>> > > > >+ String correlationName = null; >>> > > > >+ Object []objArr = null; >>> > > > > } >>> > > > > { >>> > > > > LOOKAHEAD( { >>> fromNewInvocationFollows() } ) >>> > > > > <FROM> javaToSQLNode = newInvocation() >>> > > > >+ /** >>> > > > >+ * Get the correlation name if there >>> is any >>> > in the SQL >>> > > > statement >>> > > > >+ * Extract the correlation name and >>> pass it >>> > on to the >>> > > > FromTable Node >>> > > > >+ * for binding >>> > > > >+ */ >>> > > > >+ { >>> > > > >+ objArr = optionalTableClauses(); >>> > > > >+ correlationName = >>> > > > >>> (String)objArr[OPTIONAL_TABLE_CLAUSES_CORRELATION_NAME]; >>> > > > >+ } >>> > > > > [ whereToken = <WHERE> whereClause = >>> > > whereClause(whereToken) ] >>> > > > > { >>> > > > > fromTable = (FromTable) >>> > nodeFactory.getNode( >>> > > > > >>> > > > C_NodeTypes.FROM_VTI, >>> > > > > >>> > > > javaToSQLNode.getJavaValueNode(), >>> > > > >>> > > >>> > >>> >- >>> (String) >>> >>> > > > null, >>> > > > >>> > > >>> > >>> >+ >>> correlationName, >>> > > > >>> > > > > >>> > > > null, >>> > > > > >>> > > > (Properties) null, >>> > > > > >>> > > > getContextManager()); >>> > > > >@@ -2600,6 +2611,15 @@ >>> > > > > } >>> > > > > | >>> > > > > <FROM> tableName = >>> > > qualifiedName(Limits.MAX_IDENTIFIER_LENGTH) >>> > > > >+ /** >>> > > > >+ * Get the correlation name if there >>> is any >>> > in the SQL >>> > > > statement >>> > > > >+ * Extract the correlation name and >>> pass it >>> > on to the >>> > > > FromTable Node >>> > > > >+ * for binding >>> > > > >+ */ >>> > > > >+ { >>> > > > >+ objArr = optionalTableClauses(); >>> > > > >+ correlationName = >>> > > > >>> (String)objArr[OPTIONAL_TABLE_CLAUSES_CORRELATION_NAME]; >>> > > > >+ } >>> > > > > [targetProperties = propertyList() ] >>> > > > > [ >>> > > > > whereToken = <WHERE> >>> > > > >@@ -2631,7 +2651,7 @@ >>> > > > > fromTable = (FromTable) >>> > > nodeFactory.getNode( >>> > > > > >>> > > > C_NodeTypes.FROM_BASE_TABLE, >>> > > > > >>> > > > tableName, >>> > > > >>> > > >>> > >>> >- >>> > >>> null, >>> > >>> > > > >>> > > >>> > >>> >+ >>> > >>> correlationName, >>> >>> > > >>> > > > > >>> > > > ReuseFactory.getInteger( >>> > > > > >>> > > > FromBaseTable.DELETE), >>> > > > > >>> > > > null, >>> > > > >Index: >>> > > > >>> > > >>> > >>> java/testing/org/apache/derbyTesting/functionTests/tests/lang/corrDelete.sql >>> >>> > >>> > > >>> > > > >>> > > >>> > >>> >=================================================================== >>> > > > >--- >>> > > > >>> > > >>> > >>> java/testing/org/apache/derbyTesting/functionTests/tests/lang/corrDelete.sql >>> >>> > >>> > > > (revision 0) >>> > > > >+++ >>> > > > >>> > > >>> > >>> java/testing/org/apache/derbyTesting/functionTests/tests/lang/corrDelete.sql >>> >>> > > > (revision 0) >>> > > > >@@ -0,0 +1,24 @@ >>> > > > >+-- This tests the delete functionality with >>> > correlation name >>> > > > >+ >>> > > > >+create table corrDelete(ival int, cval >>> varchar(10)); >>> > > > >+insert into corrDelete values(1,'test1'); >>> > > > >+insert into corrDelete values(2,'test2'); >>> > > > >+insert into corrDelete values(3,'test3'); >>> > > > >+insert into corrDelete values(4,'test4'); >>> > > > >+insert into corrDelete values(5,'test5'); >>> > > > >+insert into corrDelete values(6,'test6'); >>> > > > >+ >>> > > > >+select * from corrDelete; >>> > > > >+ >>> > > > >+delete from corrDelete d where ival=3; >>> > > > >+ >>> > > > >+select * from corrDelete; >>> > > > >+ >>> > > > >+delete from corrDelete as d where d.ival=5; >>> > > > >+ >>> > > > >+select * from corrDelete; >>> > > > >+ >>> > > > >+delete from corrDelete d; >>> > > > >+ >>> > > > >+select * from corrDelete; >>> > > > >+ >>> > > > >Index: >>> > > > >>> > > >>> > >>> java/testing/org/apache/derbyTesting/functionTests/tests/lang/refActions1.sql >>> >>> > > >>> > > > >>> > > > >>> > > >>> > >>> >=================================================================== >>> > > > >--- >>> > > > >>> > > >>> > >>> java/testing/org/apache/derbyTesting/functionTests/tests/lang/refActions1.sql >>> >>> (revision >>> > > > 178358) >>> > > > >+++ >>> > > > >>> > > >>> > >>> java/testing/org/apache/derbyTesting/functionTests/tests/lang/refActions1.sql >>> >>> (working >>> > > > copy) >>> > > > >@@ -719,6 +719,14 @@ >>> > > > > select * from db2test.emp13 order by dno, >>> name, mgrname; >>> > > > > select * from db2test.emp14 order by dno, >>> name, mgrname; >>> > > > > select * from db2test.emp15 order by dno, >>> name, mgrname; >>> > > > >+delete from db2test.dept d where >>> > > > >+ dno in (select dno from db2test.emp e where >>> > > > >+ e.dno = d.dno and e.dno in (select dno from >>> > db2test.emp2 >>> > > e2 where >>> > > > >+ e2.dno = e.dno and e2.dno in (select dno from >>> > > db2test.emp3 e3 where >>> > > > >+ e3.dno = e2.dno and e3.dno in (select dno from >>> > > db2test.emp4 e4 >>> > > > where >>> > > > >+ e4.dno = e3.dno and e4.dno in (select dno from >>> > > db2test.emp5 e5 >>> > > > where >>> > > > >+ e5.dno = e4.dno and e5.dno in (select dno from >>> > > db2test.emp6 e6 >>> > > > where >>> > > > >+ e6.dno = e5.dno and e6.dno in ('K55', >>> 'K52'))))))); >>> > > > > -- "END OF TESTUNIT: 11"; >>> > > > > >>> > > > > >>> > > > >@@ -2306,14 +2314,6 @@ >>> > > > > e5.dno = e4.dno and e5.dno in (select dno from >>> > > db2test.emp6 e6 >>> > > > where >>> > > > > e6.dno = e5.dno and e6.dno in ('K55', >>> 'K52'))))))) >>> > > > > order by 2, 3; >>> > > > >-delete from db2test.dept d where >>> > > > >- dno in (select dno from db2test.emp e where >>> > > > >- e.dno = d.dno and e.dno in (select dno from >>> > db2test.emp2 >>> > > e2 where >>> > > > >- e2.dno = e.dno and e2.dno in (select dno from >>> > > db2test.emp3 e3 where >>> > > > >- e3.dno = e2.dno and e3.dno in (select dno from >>> > > db2test.emp4 e4 >>> > > > where >>> > > > >- e4.dno = e3.dno and e4.dno in (select dno from >>> > > db2test.emp5 e5 >>> > > > where >>> > > > >- e5.dno = e4.dno and e5.dno in (select dno from >>> > > db2test.emp6 e6 >>> > > > where >>> > > > >- e6.dno = e5.dno and e6.dno in ('K55', >>> 'K52'))))))); >>> > > > > select * from db2test.dept order by dno, dname; >>> > > > > select * from db2test.emp order by dno, name, >>> mgrname; >>> > > > > select * from db2test.secondemp order by dno, >>> name, >>> > mgrname; >>> > > > >Index: >>> > > > >>> > > >>> > >>> java/testing/org/apache/derbyTesting/functionTests/tests/lang/copyfiles.ant >>> >>> > >>> > > > >>> > > > >>> > > >>> > >>> >=================================================================== >>> > > > >--- >>> > > > >>> > > >>> > >>> java/testing/org/apache/derbyTesting/functionTests/tests/lang/copyfiles.ant >>> >>> (revision >>> > >>> > > >>> > > > 178358) >>> > > > >+++ >>> > > > >>> > > >>> > >>> java/testing/org/apache/derbyTesting/functionTests/tests/lang/copyfiles.ant >>> >>> (working >>> > > > copy) >>> > > > >@@ -209,3 +209,4 @@ >>> > > > > wisconsin_app.properties >>> > > > > wisconsin_derby.properties >>> > > > > wisconsin_sed.properties >>> > > > >+corrDelete.sql >>> > > > >Index: >>> > > > >>> > > >>> > >>> java/testing/org/apache/derbyTesting/functionTests/master/corrDelete.out >>> >>> > > >>> > > > >>> > > > >>> > > >>> > >>> >=================================================================== >>> > > > >--- >>> > > > >>> > > >>> > >>> java/testing/org/apache/derbyTesting/functionTests/master/corrDelete.out >>> >>> > > > (revision 0) >>> > > > >+++ >>> > > > >>> > > >>> > >>> java/testing/org/apache/derbyTesting/functionTests/master/corrDelete.out >>> >>> > >>> > > > (revision 0) >>> > > > >@@ -0,0 +1,49 @@ >>> > > > >+ij> -- This tests the delete functionality with >>> > > correlation name >>> > > > >+create table corrDelete(ival int, cval >>> varchar(10)); >>> > > > >+0 rows inserted/updated/deleted >>> > > > >+ij> insert into corrDelete values(1,'test1'); >>> > > > >+1 row inserted/updated/deleted >>> > > > >+ij> insert into corrDelete values(2,'test2'); >>> > > > >+1 row inserted/updated/deleted >>> > > > >+ij> insert into corrDelete values(3,'test3'); >>> > > > >+1 row inserted/updated/deleted >>> > > > >+ij> insert into corrDelete values(4,'test4'); >>> > > > >+1 row inserted/updated/deleted >>> > > > >+ij> insert into corrDelete values(5,'test5'); >>> > > > >+1 row inserted/updated/deleted >>> > > > >+ij> insert into corrDelete values(6,'test6'); >>> > > > >+1 row inserted/updated/deleted >>> > > > >+ij> select * from corrDelete; >>> > > > >+IVAL |CVAL >>> > > > >+---------------------- >>> > > > >+1 |test1 >>> > > > >+2 |test2 >>> > > > >+3 |test3 >>> > > > >+4 |test4 >>> > > > >+5 |test5 >>> > > > >+6 |test6 >>> > > > >+ij> delete from corrDelete d where ival=3; >>> > > > >+1 row inserted/updated/deleted >>> > > > >+ij> select * from corrDelete; >>> > > > >+IVAL |CVAL >>> > > > >+---------------------- >>> > > > >+1 |test1 >>> > > > >+2 |test2 >>> > > > >+4 |test4 >>> > > > >+5 |test5 >>> > > > >+6 |test6 >>> > > > >+ij> delete from corrDelete as d where d.ival=5; >>> > > > >+1 row inserted/updated/deleted >>> > > > >+ij> select * from corrDelete; >>> > > > >+IVAL |CVAL >>> > > > >+---------------------- >>> > > > >+1 |test1 >>> > > > >+2 |test2 >>> > > > >+4 |test4 >>> > > > >+6 |test6 >>> > > > >+ij> delete from corrDelete d; >>> > > > >+4 rows inserted/updated/deleted >>> > > > >+ij> select * from corrDelete; >>> > > > >+IVAL |CVAL >>> > > > >+---------------------- >>> > > > >+ij> >>> > > > >Index: >>> > > > >>> > > >>> > >>> java/testing/org/apache/derbyTesting/functionTests/master/refActions1.out >>> >>> > >>> > > > >>> > > > >>> > > >>> > >>> >=================================================================== >>> > > > >--- >>> > > > >>> > > >>> > >>> java/testing/org/apache/derbyTesting/functionTests/master/refActions1.out >>> (revision >>> > >>> > > > 178358) >>> > > > >+++ >>> > > > >>> > > >>> > >>> java/testing/org/apache/derbyTesting/functionTests/master/refActions1.out >>> (working >>> > > >>> > > > copy) >>> > > > >@@ -1733,6 +1733,15 @@ >>> > > > > 5 |JOE2 |ASHOK |K51 >>> > > > > 2 |JOHN |ASHOK |K51 >>> > > > > 3 |ROBIN |ASHOK |K51 >>> > > > >+ij> delete from db2test.dept d where >>> > > > >+ dno in (select dno from db2test.emp e where >>> > > > >+ e.dno = d.dno and e.dno in (select dno from >>> > db2test.emp2 >>> > > e2 where >>> > > > >+ e2.dno = e.dno and e2.dno in (select dno from >>> > > db2test.emp3 e3 where >>> > > > >+ e3.dno = e2.dno and e3.dno in (select dno from >>> > > db2test.emp4 e4 >>> > > > where >>> > > > >+ e4.dno = e3.dno and e4.dno in (select dno from >>> > > db2test.emp5 e5 >>> > > > where >>> > > > >+ e5.dno = e4.dno and e5.dno in (select dno from >>> > > db2test.emp6 e6 >>> > > > where >>> > > > >+ e6.dno = e5.dno and e6.dno in ('K55', >>> 'K52'))))))); >>> > > > >+0 rows inserted/updated/deleted >>> > > > > ij> -- "END OF TESTUNIT: 11"; >>> > > > > -- >>> > > > >>> > > >>> > >>> ************************************************************************* >>> >>> > > > > -- TESTUNIT : 12 >>> > > > >@@ -5998,15 +6007,6 @@ >>> > > > > -------------------------- >>> > > > > 2 |K52|OFC >>> > > > > 1 |K55|DB >>> > > > >-ij> delete from db2test.dept d where >>> > > > >- dno in (select dno from db2test.emp e where >>> > > > >- e.dno = d.dno and e.dno in (select dno from >>> > db2test.emp2 >>> > > e2 where >>> > > > >- e2.dno = e.dno and e2.dno in (select dno from >>> > > db2test.emp3 e3 where >>> > > > >- e3.dno = e2.dno and e3.dno in (select dno from >>> > > db2test.emp4 e4 >>> > > > where >>> > > > >- e4.dno = e3.dno and e4.dno in (select dno from >>> > > db2test.emp5 e5 >>> > > > where >>> > > > >- e5.dno = e4.dno and e5.dno in (select dno from >>> > > db2test.emp6 e6 >>> > > > where >>> > > > >- e6.dno = e5.dno and e6.dno in ('K55', >>> 'K52'))))))); >>> > > > >-ERROR 42X01: Syntax error: Encountered "d" at >>> line 1, >>> > > column 26. >>> > > > > ij> select * from db2test.dept order by dno, >>> dname; >>> > > > > C0 |DNO|DNAME >>> > > > > -------------------------- >>> > > > >@@ -7585,7 +7585,7 @@ >>> > > > > where e3.name >>> <http://e3.name> <http://e3.name> >>> > < http://e3.name <http://e3.name>> >>> > > <http://e3.name> = e2.mgrname >>> > > > group by dno having >>> > > > > e2.dno in (select dno from >>> > db2test.emp e1 >>> > > > > where e1.name >>> <http://e1.name> < http://e1.name> >>> > <http://e1.name> >>> > > <http://e1.name> = e.mgrname and >>> > > > e1.mgrname = 'JOHN'))))); >>> > > > >-ERROR 42X01: Syntax error: Encountered "e" at >>> line 1, >>> > > column 25. >>> > > > >+ERROR 42X04: Column 'E5.NAME <http://E5.NAME> >>> <http://E5.NAME> >>> > <http://E5.NAME> >>> > > <http://E5.NAME>' is not in any >>> > > > table in the FROM list or it appears within a >>> join >>> > specification >>> > > > and is outside the scope of the join >>> specification or >>> > it appears >>> > > > in a HAVING clause and is not in the GROUP BY >>> > list. If this >>> > > is a >>> > > > CREATE or ALTER TABLE statement then ' E5.NAME >>> <http://E5.NAME> >>> > <http://E5.NAME> >>> > > < http://E5.NAME> <http://E5.NAME <http://E5.NAME>>' >>> > > > is not a column in the target table. >>> > > > > ij> select * from db2test.emp order by dno, >>> name, >>> > mgrname; >>> > > > > C0 |NAME |MGRNAME |DNO >>> > > > > -------------------------------------- >>> > > > >@@ -7753,7 +7753,7 @@ >>> > > > > where e.name <http://e.name> >>> <http://e.name> < >>> > http://e.name> >>> > > <http://e.name> = e2.mgrname >>> > > > group by dno having >>> > > > > e2.dno in (select dno from >>> > db2test.emp e1 >>> > > > > where e.mgrname = >>> 'JOHN'))))); >>> > > > >-ERROR 42X01: Syntax error: Encountered "e" at >>> line 1, >>> > > column 25. >>> > > > >+ERROR 42X04: Column ' E.NAME <http://E.NAME> >>> <http://E.NAME> >>> > <http://E.NAME> >>> > > < http://E.NAME>' is not in any table >>> > > > in the FROM list or it appears within a join >>> > specification >>> > > and is >>> > > > outside the scope of the join specification or it >>> > appears in a >>> > > > HAVING clause and is not in the GROUP BY >>> list. If >>> > this is a >>> > > > CREATE or ALTER TABLE statement then ' E.NAME >>> <http://E.NAME> >>> > <http://E.NAME> >>> > > <http://E.NAME> <http://E.NAME>' is >>> > > > not a column in the target table. >>> > > > > ij> select * from db2test.emp order by dno, >>> name, >>> > mgrname; >>> > > > > C0 |NAME |MGRNAME |DNO >>> > > > > -------------------------------------- >>> > > > >Index: >>> > > > >>> > > >>> > >>> java/testing/org/apache/derbyTesting/functionTests/suites/derbylang.runall >>> >>> > > > >>> > > >>> > >>> >=================================================================== >>> > > > >--- >>> > > > >>> > > >>> > >>> java/testing/org/apache/derbyTesting/functionTests/suites/derbylang.runall >>> >>> > > > (revision 178358) >>> > > > >+++ >>> > > > >>> > > >>> > >>> java/testing/org/apache/derbyTesting/functionTests/suites/derbylang.runall >>> >>> > >>> > > >>> > > > (working copy) >>> > > > >@@ -31,6 +31,7 @@ >>> > > > > lang/connect.sql >>> > > > > lang/consistencyChecker.sql >>> > > > > lang/constantExpression.sql >>> > > > >+lang/corrDelete.sql >>> > > > > lang/currentSchema.sql >>> > > > > lang/currentof.java >>> > > > > lang/cursor.java >>> > > > > >>> > > > > >>> > > > >>> > > > >>> > > >>> > > >>> > >>> > >>> >>> > > >
