db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Shreyas Kaushik <Shreyas.Kaus...@Sun.COM>
Subject Re: [PATCH] Derby-156
Date Mon, 06 Jun 2005 05:43:24 GMT
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* <Shreyas.Kaushik@sun.com 
>> <mailto:Shreyas.Kaushik@sun.com>> 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* <Shreyas.Kaushik@sun.com
>>     <mailto:Shreyas.Kaushik@sun.com>
>>     > <mailto: Shreyas.Kaushik@sun.com
>>     <mailto:Shreyas.Kaushik@sun.com>>> 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* < Shreyas.Kaushik@sun.com
>>     <mailto:Shreyas.Kaushik@sun.com>
>>     >     <mailto:Shreyas.Kaushik@sun.com
>>     <mailto:Shreyas.Kaushik@sun.com>>
>>     >     > <mailto: Shreyas.Kaushik@sun.com
>>     <mailto:Shreyas.Kaushik@sun.com>
>>     >     <mailto:Shreyas.Kaushik@sun.com
>>     <mailto:Shreyas.Kaushik@sun.com>>>> 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* <
>>     Shreyas.Kaushik@sun.com <mailto:Shreyas.Kaushik@sun.com>
>>     >     <mailto:Shreyas.Kaushik@sun.com
>>     <mailto:Shreyas.Kaushik@sun.com>>
>>     >     >     <mailto:Shreyas.Kaushik@sun.com
>>     <mailto:Shreyas.Kaushik@sun.com>
>>     >     <mailto:Shreyas.Kaushik@sun.com
>>     <mailto:Shreyas.Kaushik@sun.com>>>
>>     >     >     > <mailto: Shreyas.Kaushik@sun.com
>>     <mailto:Shreyas.Kaushik@sun.com>
>>     >     <mailto:Shreyas.Kaushik@sun.com
>>     <mailto:Shreyas.Kaushik@sun.com>>
>>     >     >     <mailto: Shreyas.Kaushik@sun.com
>>     <mailto:Shreyas.Kaushik@sun.com>
>>     >     <mailto:Shreyas.Kaushik@sun.com
>>     <mailto:Shreyas.Kaushik@sun.com>>>>> 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
>>     >     >     >     >
>>     >     >     >     >
>>     >     >     >
>>     >     >     >
>>     >     >
>>     >     >
>>     >
>>     >
>>
>>

Mime
View raw message