[Seasar-dev:8] DatabaseMetaDataUtilで識別子を大文字にするか小文字にするか固定されている

UEHARA Keizou uehara
2004年 7月 22日 (木) 20:40:04 JST


 はじめまして、上原慶三と申します。
バグトラッキングシステムのほうにも投稿したのですが、メンテナンスされていないようですので
念のためこちらにも投稿させていただきます。

 PostgreSQLでは識別子の大文字・小文字を区別せず、小文字
になおして格納するのですが、DatabaseMetaDataUtilで
supportsMixedCaseIdentifiers(dbMetaData)
をしらべて、falseだと必ず大文字に直してメタデータを取得しているので、
PostgreSQLではメタデータが取得できません。
storesLowerCaseIdentifiers()やstoresUpperCaseIdentifiers()をしらべて大文字にするか
小文字にするか決めてもらえれば助かるのですが。
---
 if (!supportsMixedCaseIdentifiers(dbMetaData)) {
  tableName = tableName.toUpperCase();
 }
---
を
---
 if (!supportsMixedCaseIdentifiers(dbMetaData)) {
  if(storesUpperCaseIdentifiers(dbMetaData)){
   tableName = tableName.toUpperCase();
  }else{
   tableName = tableName.toLowerCase();				
  }
 }
...
 public static boolean storesUpperCaseIdentifiers(DatabaseMetaData dbMetaData) {
  try {
   return dbMetaData.storesUpperCaseIdentifiers();
  } catch (SQLException ex) {
   throw new SQLRuntimeException(ex);
  }
 }
---
のようにしてほしいのです。
バグトラッキングシステムのほうには変更したソースを添付しました。
あまり詳しくテストしていませんが、今のところこの変更でPostgreSQLでもうまく動いています。
よろしくお願いします。

------------------------------------------------------------
 発信者:上原 慶三  三菱スペースソフトウェア株式会社
 関西事業部 バイオインフォマティクス部 第1技術課課
TEL:(06)4961-8862      661-0001 兵庫県尼崎市塚口本町5-4-36
FAX:(06)4961-8820      E-Mail:uehara @ cbo.mss.co.jp


seasar-dev メーリングリストの案内