[
https://issues.apache.org/jira/browse/DERBY-6361?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Knut Anders Hatlen updated DERBY-6361:
--------------------------------------
Attachment: d6361-ignore-missing-schema.diff
Attaching d6361-ignore-missing-schema.diff with the alternative fix. It uses
the variant of getSchemaDescriptor() that returns null instead of failing if
the schema does not exist. pushCompilationSchema() seems to handle the case
where the compilation schema is null just fine, so I didn't add any extra
handling of that case. (Some existing callers of pushCompilationSchema() have
special handling of null; others have not. No special handling was the most
common approach, and since it's also simpler, I picked that.)
The patch adds test cases both for the case where the generated column is added
from a not yet created schema and where the original compilation schema is
dropped after the column is added.
All the regression tests passed.
> Valid statements rejected if Derby has not implicitly created the current
> user's schema.
> ----------------------------------------------------------------------------------------
>
> Key: DERBY-6361
> URL: https://issues.apache.org/jira/browse/DERBY-6361
> Project: Derby
> Issue Type: Bug
> Components: SQL
> Reporter: Rick Hillegas
> Assignee: Rick Hillegas
> Attachments: d6361-ignore-missing-schema.diff,
> derby-6361-01-aa-createDefaultSchema.diff
>
>
> There are many examples of statements failing because Derby has not
> implicitly created the schema associated with the current user. You don't see
> this if the schema is the default APP schema. But if the user is anyone other
> than APP, then various statements can fail. Maybe we should implicitly create
> a schema even if the user isn't APP. Right now, you get an error like this:
> ERROR 42Y07: Schema 'ROOT' does not exist
> The following script shows an example of this problem:
> connect 'jdbc:derby:memory:db;create=true;user=esq';
> create table licreq( domain varchar( 10 ) );
> connect 'jdbc:derby:memory:db;user=root';
> -- fails
> ALTER TABLE esq.licreq ADD COLUMN u_domain GENERATED ALWAYS AS
> (UPPER(domain));
> connect 'jdbc:derby:memory:db;user=app';
> -- succeeds
> ALTER TABLE esq.licreq ADD COLUMN u_domain GENERATED ALWAYS AS
> (UPPER(domain));
--
This message was sent by Atlassian JIRA
(v6.1#6144)