[
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.