[
https://issues.apache.org/jira/browse/DERBY-4?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mike Matrigali updated DERBY-4:
-------------------------------
Does Derby today guarantee anything other than uniqueness from "generated
always" fields? The current implementation
happens to return increasing keys, but do we ever guarantee that, and should
we? Will it limit the ability in the future to
optimize concurrency with respect to generating keys. It may be easier to
guarantee increasing keys within a single statement, but not across threads
inserting into the same table.
An example of a cross thread optimization would be the following. Today we
allocate a chunk of keys and cache them in
one place in the system. That place is a bottleneck for all concurrent
inserters. To completely alleviate the bottleneck we
could allocate a group of keys for each thread doing inserts, then they would
only bottleneck when they had used up the
group of keys. And if we didn't want to "lose" key space we might reuse the
keys from the group that weren't exhausted which
then for a single thread might result in keys not incrementing any more. I
believe there are some issues reported in jira about concurrency problems with
generated keys, so work in this area may be required in the future.
> "order by" is not supported for "insert ... select"
> ---------------------------------------------------
>
> Key: DERBY-4
> URL: https://issues.apache.org/jira/browse/DERBY-4
> Project: Derby
> Issue Type: New Feature
> Components: SQL
> Reporter: Christian d'Heureuse
> Assigned To: Bryan Pendleton
> Priority: Minor
> Attachments: insertOrderBy.diff, insertOrderBy_v2.diff, samples.ij
>
>
> When filling a table with "insert ... select ...", "order by" cannot be
> specified.
> There is not method to copy a table sorted into another table (except using
> export/import). This would be useful to optimize performance for big tables,
> or to create identity values that are ascending (related to another column).
> Example:
> create table temp1 (
> s varchar(10));
> insert into temp1 values 'x','a','c','b','a';
> create table temp2 (
> i integer not null
> generated always as identity
> primary key,
> s varchar(10));
> insert into temp2 (s)
> select s from temp1 order by s;
> --> Error: "order by" is not allowed.
> -- trying to use "group by" instead of "oder by":
> insert into temp2 (s)
> select s from temp1 group by s;
> select * from temp2;
> --> "group by" did not sort the table.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.