[ 
https://issues.apache.org/jira/browse/DERBY-3945?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rick Hillegas updated DERBY-3945:
---------------------------------

    Attachment: derby-3945-01-aa-functionSchema.diff

Attaching derby-3945-01-aa-functionSchema.diff. This patch forces Derby to use 
the current schema at DDL time (rather than DML time) to resolve unqualified 
function references in generation clauses. Running tests now.

There are two pieces to this fix:

1) The persisted default descriptor now stores the current schema which was in 
effect when the generation clause was defined.

2) At INSERT/UPDATE time, that saved schema temporarily becomes the current 
schema when we bind the generation clause.

A similar approach could be used for the related bugs having to do with 
unqualified function names in CHECK constraints (DERBY-3944) and VIEWS 
(DERBY-3953). Note that this approach does not address the related issues with 
dblook (DERBY-3954).


Touches the following files:

M      java/engine/org/apache/derby/catalog/DefaultInfo.java
M      java/engine/org/apache/derby/catalog/types/DefaultInfoImpl.java

Adds the DDL-time current schema to the default descriptor.


M      java/engine/org/apache/derby/impl/sql/compile/TableElementList.java

Stuffs the current schema into the default descriptor at CREATE/ALTER time.


M      java/engine/org/apache/derby/impl/sql/compile/DMLModStatementNode.java

Temporarily sets the current schema to the schema stored in the default when we 
bind generation clauses.


M      
java/testing/org/apache/derbyTesting/functionTests/tests/lang/GeneratedColumnsPermsTest.java

Adds tests.


> Generation clauses which mention user-coded functions may produce different 
> resuls depending on who performs the triggering INSERT/UPDATE
> -----------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-3945
>                 URL: https://issues.apache.org/jira/browse/DERBY-3945
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.5.0.0
>            Reporter: Rick Hillegas
>         Attachments: derby-3945-01-aa-functionSchema.diff, zz.sql
>
>
> This is similar to DERBY-3944. The compiler uses the current schema in order 
> to resolve unqualifed function names when preparing INSERT/UPDATE statement. 
> This means that a generation clause may evaluate differently depending on who 
> invokes the triggering INSERT/UPDATE statement. This violates the requirement 
> that generation clause should be deterministic (see part 2 of the ANSI/ISO 
> standard, section 4.16.
> Hopefully, the same patch will fix both DERBY-3944 and this issue.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to