Ticket #87 (closed 不具合: fixed)

Opened 2 years ago

Last modified 2 years ago

MySQLでuseMapperNameAsTableNameが有効のときデフォルトクエリ内の変数名が正しくキャメルケースにならない

Reported by: iteman Owned by: iteman
Priority: major Milestone: 1.1.0
Component: 04: カーネル Version: The Latest Version of 1.0
Keywords: Cc:
Blocking: Blocked By:

Description (last modified by iteman) (diff)

MySQLでuseMapperNameAsTableNameが有効のときデフォルトクエリ内の変数名が正しくキャメルケースにならない

MySQLのlower_case_table_namesシステム変数が1に設定されていることを前提とした、MDB2のケース関連オプションとキャメルケース変換の関係を下記に示す。

MDB2_PORTABILITY_FIX_CASE($db->options['portability']) $db->options['field_case']の値 foo_barフィールド用の変数名
有効 CASE_LOWER(0) $fOOBAR
有効 CASE_UPPER(1) メタデータ取得時に例外発生
無効 CASE_LOWER(0) $fooBar
無効 CASE_UPPER(1) $fOOBAR

3番目のパターンのみ成功するため、useMapperNameAsTableNameが有効な場合は、無条件に下記の設定を行うようにすれば解決できると思われる。

  • $db->options['portability']にMDB2_PORTABILITY_FIX_CASEを設定する
  • $db->options['field_case']にCASE_LOWERを設定する

Change History

Changed 2 years ago by iteman

  • description modified (diff)

Changed 2 years ago by iteman

  • milestone set to 1.0.1

Changed 2 years ago by iteman

  • status changed from new to assigned

Changed 2 years ago by iteman

  • status changed from assigned to closed
  • resolution set to fixed

修正完了。SQL Serverでも同様の問題が発生することがわかった。

詳細はチェンジセット422を参照のこと。

Note: See TracTickets for help on using tickets.