2

->select(..., { for => 'update_nowait' })(Oracle用)ステートメントを選択するための「FOR UPDATE NOWAIT」のサポートを追加したい。

DBIx::Class 0.08127を使用しています

DBIx/Class/SQLMaker/Oracle.pm を変更できますが、特に配布ファイルの変更を伴わない場合、別の (推奨される) 方法があるかどうか疑問に思っていました。

4

1 に答える 1

1

変更DBix::Class::SQLMaker::Oracleは私が行った方法です。

のDBIxクラス配布を含むディレクトリの前にあるディレクトリに、変更したモジュールを含めるだけ@INCです。

DBIx/Class/SQLMaker/Oracle.pm への変更は、次の行を追加することです。

my $for_syntax = {
  update => 'FOR UPDATE',
  shared => 'FOR SHARE',
  update_nowait => 'FOR UDPATE NOWAIT',
};

sub _lock_select {
  my ($self, $type) = @_;
  my $sql = $for_syntax->{$type} || croak "Unknown SELECT ... FOR type '$type' requested";
  return " $sql";
}

$for_syntaxレキシカルではなくメソッド呼び出しであれば、 の定義を繰り返す必要はありません_lock_select。パッチを提出したい場合に考慮すべきこと。

于 2011-11-19T17:56:45.607 に答える