Re: Synthesize support for Statement.getGeneratedKeys()?

Поиск
Список
Период
Сортировка
Искать
От
Ken Johanson
Тема
Re: Synthesize support for Statement.getGeneratedKeys()?
Дата
Msg-id
45D4EF6A.4000608@kensystem.com
Ответ на
Список
Дерево обсуждения
Re: Synthesize support for Statement.getGeneratedKeys()? "Albe Laurenz" <all@adv.magwien.gv.at>
This patch adds the Major and Minor version checking, for server >=8.2.

If there is a more correct method of checking for quote-able 
identifiers, or anything else I'm missing, please let me know.

Thanks,
Ken
# This patch file was generated by NetBeans IDE
# Following Index: paths are relative to: C:\dev\java\proj\pgjdbc\pgjdbc\org\postgresql\jdbc3
# This patch can be applied using context Tools: Patch action on respective folder.
# It uses platform neutral UTF-8 encoding and \n newlines.
# Above lines and this line are ignored by the patching process.
Index: AbstractJdbc3Statement.java
*** C:\dev\java\proj\pgjdbc\pgjdbc\org\postgresql\jdbc3\AbstractJdbc3Statement.java Base (1.21)
--- C:\dev\java\proj\pgjdbc\pgjdbc\org\postgresql\jdbc3\AbstractJdbc3Statement.java Locally Modified (Based On 1.21)
***************
*** 19,24 ****
--- 19,26 ----
  import org.postgresql.core.QueryExecutor;
  import org.postgresql.core.Field;
  import org.postgresql.core.BaseConnection;
+ import org.postgresql.jdbc2.AbstractJdbc2Connection;
+ import org.postgresql.jdbc2.AbstractJdbc2Statement.StatementResultHandler;
  import org.postgresql.util.GT;
  
  /**
***************
*** 28,33 ****
--- 30,38 ----
   */
  public abstract class AbstractJdbc3Statement extends org.postgresql.jdbc2.AbstractJdbc2Statement
  {
+     private static final int SUPPORTED_RETURNING_MAJOR = 8;
+ 	private static final int SUPPORTED_RETURNING_MINOR = 8;
+ 	
  	private final int rsHoldability;
  
      public AbstractJdbc3Statement (AbstractJdbc3Connection c, int rsType, int rsConcurrency, int rsHoldability) throws SQLException
***************
*** 106,112 ****
       */
      public ResultSet getGeneratedKeys() throws SQLException
      {
!         return createDriverResultSet(new Field[0], new Vector());
      }
  
      /**
--- 111,119 ----
       */
      public ResultSet getGeneratedKeys() throws SQLException
      {
! 		return result==null ?
! 		    createDriverResultSet(new Field[0], new Vector())
!             : result.getResultSet();
      }
  
      /**
***************
*** 135,141 ****
      {
          if (autoGeneratedKeys == Statement.NO_GENERATED_KEYS)
              return executeUpdate(sql);
! 
          throw new PSQLException(GT.tr("Returning autogenerated keys is not supported."), PSQLState.NOT_IMPLEMENTED);
      }
  
--- 142,148 ----
      {
          if (autoGeneratedKeys == Statement.NO_GENERATED_KEYS)
              return executeUpdate(sql);
! 		//fix me : impl NO_GENERATED_KEYS & RETURN_GENERATED_KEYS 
          throw new PSQLException(GT.tr("Returning autogenerated keys is not supported."), PSQLState.NOT_IMPLEMENTED);
      }
  
***************
*** 184,198 ****
       */
      public int executeUpdate(String sql, String columnNames[]) throws SQLException
      {
!         if (columnNames.length == 0)
              return executeUpdate(sql);
! 
!         throw new PSQLException(GT.tr("Returning autogenerated keys is not supported."), PSQLState.NOT_IMPLEMENTED);
      }
  
      /**
       * Executes the given SQL statement, which may return multiple results,
--- 191,235 ----
       */
      public int executeUpdate(String sql, String columnNames[]) throws SQLException
      {
! 		//fix me : columnNames only quoted if contain 0x20
!         //fix me : if super changes, will break (need interface to get server verion):
! 		String prefix = sql.substring(0,10).toLowerCase();
! 		if (columnNames==null || prefix.indexOf("insert")==-1)
! 			return executeUpdateGetResults(sql);
! 		if (!(connection instanceof AbstractJdbc2Connection))
! 		{
! 			throw new PSQLException(GT.tr("Driver version does not support returning generated keys.")+" "+connection.getClass().getName(), PSQLState.NOT_IMPLEMENTED);
! 		}
! 		AbstractJdbc2Connection con = (AbstractJdbc2Connection)connection;
! 		int args = columnNames.length;
! 		int major = con.getServerMajorVersion();
! 		int minor = con.getServerMinorVersion();
! 		if (major
В списке pgsql-jdbc по дате отправления
От: Kris Jurka
Дата:
От: Kris Jurka
Дата:
FAQ