->select(..., { for => 'update_nowait' })
(Oracle用)ステートメントを選択するための「FOR UPDATE NOWAIT」のサポートを追加したい。
DBIx::Class 0.08127を使用しています
DBIx/Class/SQLMaker/Oracle.pm を変更できますが、特に配布ファイルの変更を伴わない場合、別の (推奨される) 方法があるかどうか疑問に思っていました。
->select(..., { for => 'update_nowait' })
(Oracle用)ステートメントを選択するための「FOR UPDATE NOWAIT」のサポートを追加したい。
DBIx::Class 0.08127を使用しています
DBIx/Class/SQLMaker/Oracle.pm を変更できますが、特に配布ファイルの変更を伴わない場合、別の (推奨される) 方法があるかどうか疑問に思っていました。
変更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
。パッチを提出したい場合に考慮すべきこと。