Thread: Updatable query and column aliases
Hi folks. I cant moveToInsertRow when use queries with assigned names in select list. Following code works good: stmt = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); rs = stmt.executeQuery("select id from test"); rs.moveToInsertRow(); , but then I change query to "select id val from test" exception "The column name id was not found in this ResultSet." raised on moveToInsertRow. Is it any limitation on updatable queries? -- Anton
Anton Bobov schrieb: > Hi folks. > > I cant moveToInsertRow when use queries with assigned names in select > list. > > Following code works good: > > stmt = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, > ResultSet.CONCUR_UPDATABLE); > rs = stmt.executeQuery("select id from test"); > rs.moveToInsertRow(); > > , but then I change query to "select id val from test" exception "The > column name id was not found in this ResultSet." raised on > moveToInsertRow. > > Is it any limitation on updatable queries? > > -- > Anton > > Hello Anton, yes, the limitations are: 1) query must only use one table 2) no column aliases can be used Point 2 is a bug which I have described here: http://archives.postgresql.org/pgsql-jdbc/2010-12/msg00084.php and here: http://archives.postgresql.org/pgsql-jdbc/2011-08/msg00077.php The patch mentioned above does not work anymore since some things have changed in later versions of the driver. Here is a patch for version 9.0.801 (the only file that has to be changed is "AbstractJdbc2ResultSet"). http://home.arcor.de/stefanreiser/docs/postgresql/9.0.801/AbstractJdbc2ResultSet.java ... sorry, I'm not familiar with the versioning system - maybe one of the developers can take a look at my patch? Regards Stefan Reiser
Sorry, what I just posted is in fact for the current version _9.1-901_ an it can be found here: http://home.arcor.de/stefanreiser/docs/postgresql/9.1-901/AbstractJdbc2ResultSet.java Stefan Reiser schrieb: > Anton Bobov schrieb: >> Hi folks. >> >> I cant moveToInsertRow when use queries with assigned names in select >> list. >> >> Following code works good: >> >> stmt = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, >> ResultSet.CONCUR_UPDATABLE); >> rs = stmt.executeQuery("select id from test"); >> rs.moveToInsertRow(); >> >> , but then I change query to "select id val from test" exception "The >> column name id was not found in this ResultSet." raised on >> moveToInsertRow. >> >> Is it any limitation on updatable queries? >> >> -- >> Anton >> >> > Hello Anton, > > yes, the limitations are: > 1) query must only use one table > 2) no column aliases can be used > > Point 2 is a bug which I have described here: > http://archives.postgresql.org/pgsql-jdbc/2010-12/msg00084.php > and here: > http://archives.postgresql.org/pgsql-jdbc/2011-08/msg00077.php > > The patch mentioned above does not work anymore since some things have > changed in later versions of the driver. > > Here is a patch for version 9.0.801 (the only file that has to be > changed is "AbstractJdbc2ResultSet"). > > > http://home.arcor.de/stefanreiser/docs/postgresql/9.0.801/AbstractJdbc2ResultSet.java > > ... sorry, I'm not familiar with the versioning system - maybe one of > the developers can take a look at my patch? > > Regards > Stefan Reiser >