module OracleSqlParser::Grammar::Select
grammar ForUpdate rule for_update_clause for_keyword space update_keyword of:(space of_keyword space for_update_clause_columns)? wait:( space w:wait_keyword space time:integer / space w:nowait_keyword )? { def ast OracleSqlParser::Ast::ForUpdateClause[ :columns => of.try(:for_update_clause_columns).ast, :wait => wait.try(:w).ast, :time => wait.try(:time).ast ].remove_nil_values! end } end rule for_update_clause_columns for_update_clause_column more:(space? ',' space? for_update_clause_column)* { def ast OracleSqlParser::Ast::Array[ for_update_clause_column.ast, *more_for_update_clause_columns.map(&:ast) ] end def more_for_update_clause_columns more.elements.map(&:for_update_clause_column) end } end rule for_update_clause_column ( schema_name space? '.' space? table_name space? '.' space? column_name / table_name space? '.' space? column_name / space? column_name ) { def ast OracleSqlParser::Ast::Identifier[:name => text_value] end } end end
end