Issue Details (XML | Word | Printable)

Key: DERBY-392
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Minor Minor
Assignee: Satheesh Bandaram
Reporter: Satheesh Bandaram
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Derby

Disable creating indexes on long varchar for bit data. Long varchar column doesn't allow creating indexes already.

Created: 25/Jun/05 06:18 AM   Updated: 14/Oct/05 08:47 AM
Return to search
Component/s: SQL
Affects Version/s: 10.0.2.2, 10.1.1.0
Fix Version/s: 10.1.2.1, 10.2.1.6

Time Tracking:
Not Specified

File Attachments:
  Size
Text File Licensed for inclusion in ASF works Derby392 2005-10-05 10:05 AM Satheesh Bandaram 7 kB
Environment: generic

Resolution Date: 14/Oct/05 08:47 AM


 Description  « Hide
I guess I did not articulate my reasons for suggesting removal of index support for 'long varchar for bit data' completely.
 
    1) Long varchar types are not comparable... If they are not comparable, it should not be possible to use them in GROUP BY, ORDER BY or allow regular B-Tree indexes.
   2) Also, long varchar types tend to be long in size and hence the regular B-Tree mechanism is not a suitable way to index them. Dan also mentioned they become ineffective for keys longer than half a page size.

It should not be possible to create an index on 'long varchar for bit data' datatypes. Derby currently doesn't allow creating indexes on 'long varchar' datatypes and the same should apply for it's bit data equivalent too.

ij> create table longchar ( i int, c long varchar);
0 rows inserted/updated/deleted
ij> create index longIdx on longchar(c);
ERROR X0X67: Columns of type 'LONG VARCHAR' may not be used in CREATE INDEX, ORD
ER BY, GROUP BY, UNION, INTERSECT, EXCEPT or DISTINCT statements because compari
sons are not supported for that type.
ij> create table longcharBitData ( i int, c long varchar for bit data);
0 rows inserted/updated/deleted
ij> create index longIdx on longcharBitData(c);
0 rows inserted/updated/deleted

Derby also seems to allow GROUP BY and/or ORDER BY on LONG VARCHAR FOR BIT DATA types. I believe this is incorrect too.
select c from longcharBitData group by c;
C

--------------------------------------------------------------------------------
------------------------------------------------

0 rows selected
ij> select c from longcharBitData group by c order by c;
C

--------------------------------------------------------------------------------
------------------------------------------------

0 rows selected

 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Daniel John Debrunner added a comment - 25/Jun/05 07:02 AM
Not sure why we would remove a working feature, applications may be dependent on it.
Now it may be that such indexes are not really working beause the btree has a limit on key length that would be make them not useable if the key value was over 1/2 page length.
Or maybe if long varchar for bit data is not comparable then obviously they can't be used and so it's a bug allowing such an index.

Satheesh Bandaram added a comment - 01/Jul/05 02:38 PM
Submitting a patch for review. I think we need to document that Derby doesn't support indexing, group by, order by on long varchar for bit data anymore in release notes, in case some one is already using this incorrect behavior.

I think it would be good to port this fix to 10.1, so we can prevent more incorrect dependence on this behavior.

Satheesh Bandaram added a comment - 05/Oct/05 10:05 AM
Updated patch with master updates. I will merge this into trunk and then port to 10.1 soon.

Satheesh Bandaram added a comment - 06/Oct/05 03:33 AM
This fix has been submitted.

Sending java\engine\org\apache\derby\iapi\types\TypeId.java
Sending java\testing\org\apache\derbyTesting\functionTests\master\aggbuiltin.out
Sending java\testing\org\apache\derbyTesting\functionTests\master\bit.out
Sending java\testing\org\apache\derbyTesting\functionTests\master\groupBy.out
Sending java\testing\org\apache\derbyTesting\functionTests\master\implicitConversions.out
Transmitting file data .....
Committed revision 295070.

Satheesh Bandaram added a comment - 06/Oct/05 03:45 AM
Ported fix from TRUNK to 10.1 branch.

Sending java\engine\org\apache\derby\iapi\types\TypeId.java
Sending java\testing\org\apache\derbyTesting\functionTests\master\aggbuiltin.out
Sending java\testing\org\apache\derbyTesting\functionTests\master\bit.out
Sending java\testing\org\apache\derbyTesting\functionTests\master\groupBy.out
Sending java\testing\org\apache\derbyTesting\functionTests\master\implicitConversions.out
Transmitting file data .....
Committed revision 295076.

Satheesh Bandaram added a comment - 06/Oct/05 03:51 AM
I have verified the fix addresses the problem in 10.2 build.

Satheesh Bandaram added a comment - 14/Oct/05 08:46 AM
Reopening to include 10.1.1.2 fixIn.