OK - I will start working on this (It was actually done last year but I never checked it in).
Should the changes go in 2.2.x and/or trunk? Is there an easy way to move changes in 2.2.x to trunk? David At 10:25 AM 7/11/2006, Michael Brasser wrote: >Up until about a month ago the FIDs generated by >AutoIncrementFIDMapper were always null. So I would be a bit >surprised if making it abstract broke anything that wasn't already >broken... > >In regards to the example, the problem occurs because the database >column actually is autoincrementing -- i.e. the DB has an internal >record of what the next value should be, and it is not always the >same as the value returned by SELECT MAX(ID). (the internal record >increases on inserts but doesn't decrease on deletes, if that makes >sense? I think PostGIS sequence values are the same?) > >Michael > >On Jul 11, 2006, at 7:00 PM, David Adler wrote: > >>The FIDMapper classes have also caused me considerable aggravation. >> >>I had to subclass AutoIncrementFIDMapper for DB2 in part because >>each table name needs to be >>qualified by the schema name. >> >>Does anyone use AutoIncrementFIDMapper as it currently exists? If >>it changes to abstract, what will it break? >> >>It isn't clear to me why the MySQL problem illustrated below >>occurs. If you add >>ID 100 delete it and do a SELECT MAX(ID), shouldn't it again return >>100? >> >>At 10:43 AM 7/10/2006, Michael Brasser wrote: >>>Hi David, >>> >>>Just wanted to mention that there was some discussion on the list >>>about a month ago about refactoring AutoIncrementFIDMapper. It >>>currently uses "order by" to return a value, but this is problematic >>>(I've included a problem case from the earlier discussion below). Not >>>sure if it would make sense to (or if you would even be willing to) >>>look at this issue while you are working with the FIDMapper code? >>> >>>Regards, >>>Michael >>> >>>On June 7, 2006, Michael Brasser wrote: >>> >>> > I also like your suggestion for making AutoIncrementFIDMapper >>> > abstract (with subclasses for specific datastores). One potential >>> > problem with the current "...order by..." solution is the following >>> > case (which I have verified in MySQL): >>> > >>> > a. We already have 99 records, IDs 1-99 >>> > b. Add a new record, automatically generated ID is 100 >>> > c. Delete the newly added record. >>> > d. Add another new record, automatically generated ID is 101, but >>> > "SELECT MAX" and "ORDER BY" would both cause the feature id >>>mapper to >>> > return 100. >>> > >>> > A MySQL-specific autoincrement mapper could be implemented using >>> > "SELECT last_insert_id()". I'm not familiar with Oracle, but it >>>looks >>> > like it also has sequences, and could be implemented using >>>something >>> > like "seq_name.CURVAL". >>> >>>On Jul 6, 2006, at 3:28 AM, David Adler wrote: >>> >>> > I would like to implement this and would like to check if anyone >>> > has any >>> > objections. The interface should not change except for >>> > MaxIncFIDMapper >>> > which I believe incorrectly returns hardcoded Types.VARCHAR for the >>> > column >>> > type when it should return the type of the actual fid column. >>> > (Since it >>> > assumes that the next fid value is MAX(key_column), it doesn't make >>> > sense >>> > for this to be a VARCHAR column). >>> > >>> > The complete work item is included below. It is difficult to test >>> > whether >>> > this breaks anything in RDBMS datastores which subclass fidmapper >>> > classes >>> > as I don't have databases other than DB2 and PostGIS installed. >>> > >>> > *** Issue details below *** >>> > >>> > The description of MaxIncFIDMapper states that it is only valid for >>> > numeric >>> > column types yet the method getColumnSize is hard-coded to return >>> > Types.VARCHAR. It also is hard-coded to return a column size of >>>255. >>> > >>> > It should return the column type that was specified in the >>> > constructor. >>> > >>> > AbstractFIDMapper has almost no function and all the subclasses >>>have >>> > considerable duplicated function. The duplicated function should be >>> > factored up. >>> > >>> > There are also things that make no sense but I don't know if >>> > anything will >>> > break if they are changed. The getColumnXXX(int col) methods handle >>> > index >>> > out of bounds by returning null, 0 and ArrayIndexOutOfBounds. They >>> > should >>> > probably all return ArrayIndexOutOfBounds but this may break other >>> > code >>> > that doesn't handle an exception. >>> > >>> > >>> > >>> > Using Tomcat but need to do more? Need to support web services, >>> > security? >>> > Get stuff done quickly with pre-integrated technology to make your >>> > job easier >>> > Download IBM WebSphere Application Server v.1.0.1 based on Apache >>> > Geronimo >>> > http://sel.as-us.falkag.net/sel? >>> > cmd=lnk&kid=120709&bid=263057&dat=121642 >>> > _______________________________________________ >>> > Geotools-devel mailing list >>> > [email protected] >>> > https://lists.sourceforge.net/lists/listinfo/geotools-devel >>> > >>> >>> >>> >>>--------------------------------------------------------------------- ---- >>>Using Tomcat but need to do more? Need to support web services, >>>security? >>>Get stuff done quickly with pre-integrated technology to make your >>>job easier >>>Download IBM WebSphere Application Server v.1.0.1 based on Apache >>>Geronimo >>>http://sel.as-us.falkag.net/sel? cmd=lnk&kid=120709&bid=263057&dat=121642 >>>_______________________________________________ >>>Geotools-devel mailing list >>>[email protected] >>>https://lists.sourceforge.net/lists/listinfo/geotools-devel >> >> > ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Geotools-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/geotools-devel
