Re: JDBC Driver Database Meta Data - FK_NAME

Поиск
Список
Период
Сортировка
От Barry Lind
Тема Re: JDBC Driver Database Meta Data - FK_NAME
Дата
Msg-id 3D7ED979.404@xythos.com
обсуждение исходный текст
Ответ на JDBC Driver Database Meta Data - FK_NAME  (Kris Jurka <jurka@ejurka.com>)
Список pgsql-patches
Patch partially applied.

I didn't apply the changes to AbstractJdbc1DatabaseMetaData.java that
changes the FK_NAME being returned.  The existing code is very explicit
that it is trying to return something unique for foreign key name and
the new code doesn't necessarily do that.

Dave,

Do you see any reason why this shouldn't be changed as this patch does?
  I am uncomfortable applying this without your review.

thanks,
--Barry


Kris Jurka wrote:
>
> For the FK_NAME field in various DatabaseMetaData methods that rely on
> getImportedExportedKeys use the actual constraint name (tgconstrname)
> not the trigger arguments (tgargs).
>
> Update the DatabaseMetaDataTest because 7.3 returns $n instead of
> <unnamed> for unnamed constraints.
>
> Also add a missing drop table in UpdateableResultTest.
>
> Kris Jurka
>
>
> ------------------------------------------------------------------------
>
> Index: src/interfaces/jdbc/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java
> ===================================================================
> RCS file: /projects/cvsroot/pgsql-server/src/interfaces/jdbc/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java,v
> retrieving revision 1.13
> diff -c -r1.13 DatabaseMetaDataTest.java
> *** src/interfaces/jdbc/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java    2002/09/06 21:23:06    1.13
> --- src/interfaces/jdbc/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java    2002/09/09 20:05:19
> ***************
> *** 264,270 ****
>                   assertTrue( fkColumnName.equals( "m" ) || fkColumnName.equals( "n" ) ) ;
>
>                   String fkName = rs.getString( "FK_NAME" );
> !                 assertTrue( fkName.equals( "<unnamed>") );
>
>                   String pkName = rs.getString( "PK_NAME" );
>                   assertTrue( pkName.equals("vv_pkey") );
> --- 264,274 ----
>                   assertTrue( fkColumnName.equals( "m" ) || fkColumnName.equals( "n" ) ) ;
>
>                   String fkName = rs.getString( "FK_NAME" );
> !                 if (((org.postgresql.jdbc1.AbstractJdbc1Connection)con1).haveMinimumServerVersion("7.3")) {
> !                     assertTrue(fkName.equals("$1"));
> !                 } else {
> !                     assertTrue( fkName.equals( "<unnamed>") );
> !                 }
>
>                   String pkName = rs.getString( "PK_NAME" );
>                   assertTrue( pkName.equals("vv_pkey") );
> Index: src/interfaces/jdbc/org/postgresql/test/jdbc2/UpdateableResultTest.java
> ===================================================================
> RCS file: /projects/cvsroot/pgsql-server/src/interfaces/jdbc/org/postgresql/test/jdbc2/UpdateableResultTest.java,v
> retrieving revision 1.6
> diff -c -r1.6 UpdateableResultTest.java
> *** src/interfaces/jdbc/org/postgresql/test/jdbc2/UpdateableResultTest.java    2002/09/06 21:23:06    1.6
> --- src/interfaces/jdbc/org/postgresql/test/jdbc2/UpdateableResultTest.java    2002/09/09 20:05:19
> ***************
> *** 124,129 ****
> --- 124,130 ----
>               st.close();
>
>               TestUtil.dropTable( con, "updateable" );
> +             TestUtil.dropTable( con, "second" );
>               TestUtil.closeDB( con );
>           }
>           catch (Exception ex)
> Index: src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java
> ===================================================================
> RCS file:
/projects/cvsroot/pgsql-server/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java,v
> retrieving revision 1.5
> diff -c -r1.5 AbstractJdbc1DatabaseMetaData.java
> *** src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java    2002/09/08 00:15:28    1.5
> --- src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java    2002/09/09 20:05:20
> ***************
> *** 2630,2636 ****
>
>               tuple[2] = rs.getBytes(1); //PKTABLE_NAME
>               tuple[6] = rs.getBytes(2); //FKTABLE_NAME
> -             String fKeyName = rs.getString(3);
>               String updateRule = rs.getString(10);
>
>               if (updateRule != null )
> --- 2630,2635 ----
> ***************
> *** 2712,2718 ****
>               tuple[7] = fkeyColumn.getBytes(); //FKCOLUMN_NAME
>
>               tuple[8] = rs.getBytes(4); //KEY_SEQ
> !             tuple[11] = targs.getBytes(); //FK_NAME this will give us a unique name for the foreign key
>               tuple[12] = rs.getBytes(5); //PK_NAME
>
>               // DEFERRABILITY
> --- 2711,2717 ----
>               tuple[7] = fkeyColumn.getBytes(); //FKCOLUMN_NAME
>
>               tuple[8] = rs.getBytes(4); //KEY_SEQ
> !             tuple[11] = rs.getBytes(3); //FK_NAME
>               tuple[12] = rs.getBytes(5); //PK_NAME
>
>               // DEFERRABILITY
>
>
> ------------------------------------------------------------------------
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster


В списке pgsql-patches по дате отправления:

Предыдущее
От: Barry Lind
Дата:
Сообщение: Re: JDBC Driver Test Suite Drop Table w/ Cascade
Следующее
От: Barry Lind
Дата:
Сообщение: Re: Allow the jdbc driver to retrieve NAMEDATALEN