class ArelExtensions::Visitors::ArelExtensions::Visitors::Arel::Visitors::Oracle
Constants
- DATE_FORMAT_DIRECTIVES
- DATE_MAPPING
- NUMBER_COMMA_MAPPING
- SPECIAL_CHARS
Public Instance Methods
get_time_converted(element)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 516 def get_time_converted element if element.is_a?(Time) ArelExtensions::Nodes::Format.new [element, '%H:%M:%S'] elsif element.is_a?(Arel::Attributes::Attribute) col = Arel::Table.engine.connection.schema_cache.columns_hash(element.relation.table_name)[element.name.to_s] if col && (col.type == :time) ArelExtensions::Nodes::Format.new [element, '%H:%M:%S'] else element end else element end end
visit_ArelExtensions_InsertManager_BulkValues(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 470 def visit_ArelExtensions_InsertManager_BulkValues o, collector collector << "(" o.left.each_with_index do |row, idx| # values collector << " UNION ALL " if idx != 0 collector << "(SELECT " len = row.length - 1 row.zip(o.cols).each_with_index { |(value, attr), i| case value when Arel::Nodes::SqlLiteral, Arel::Nodes::BindParam collector = visit value, collector else collector << quote(value, attr && column_for(attr)).to_s end collector << COMMA unless i == len } collector << ' FROM DUAL)' end collector << ")" collector end
visit_ArelExtensions_Nodes_AiIMatches(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 71 def visit_ArelExtensions_Nodes_AiIMatches o, collector collector = visit o.left.ai_collate, collector collector << ' LIKE ' collector = visit o.right.ai_collate, collector if o.escape collector << ' ESCAPE ' visit o.escape, collector else collector end end
visit_ArelExtensions_Nodes_AiMatches(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 59 def visit_ArelExtensions_Nodes_AiMatches o, collector collector = visit o.left.ai_collate, collector collector << ' LIKE ' collector = visit o.right.ai_collate, collector if o.escape collector << ' ESCAPE ' visit o.escape, collector else collector end end
visit_ArelExtensions_Nodes_As(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 598 def visit_ArelExtensions_Nodes_As o, collector visit_Arel_Nodes_As o, collector end
visit_ArelExtensions_Nodes_Blank(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 430 def visit_ArelExtensions_Nodes_Blank o, collector visit o.expr.trim.length.coalesce(0).eq(0), collector end
visit_ArelExtensions_Nodes_Cast(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 251 def visit_ArelExtensions_Nodes_Cast o, collector case o.as_attr when :string collector << "TO_CHAR(" collector = visit o.left, collector collector << ")" return collector when :text collector << "TO_CLOB(" collector = visit o.left, collector collector << ")" return collector when :ntext collector << "TO_NCLOB(" collector = visit o.left, collector collector << ")" return collector when :time if (o.left.respond_to?(:return_type) && o.left.return_type == :string) || o.left.is_a?(Arel::Nodes::Quoted) collector << "TO_DATE(" collector = visit o.left, collector collector << ",'HH24:MI:SS')" else collector << "TO_DATE(TO_CHAR(" collector = visit o.left, collector collector << ",'HH24:MI:SS'),'HH24:MI:SS')" end return collector when :number, :decimal collector << "TO_NUMBER(" collector = visit o.left, collector collector << ")" return collector when :datetime as_attr = Arel::Nodes::SqlLiteral.new('timestamp') when :date if (o.left.respond_to?(:return_type) && o.left.return_type == :string) || o.left.is_a?(Arel::Nodes::Quoted) collector << "TO_DATE(" collector = visit o.left, collector collector << ",'YYYY-MM-DD')" else collector << "TO_DATE(TO_CHAR(" collector = visit o.left, collector collector << ",'YYYY-MM-DD'),'YYYY-MM-DD')" end return collector when :binary as_attr = Arel::Nodes::SqlLiteral.new('binary') else as_attr = Arel::Nodes::SqlLiteral.new(o.as_attr.to_s) end collector << "CAST(" collector = visit o.left, collector collector << " AS " collector = visit as_attr, collector collector << ")" collector end
visit_ArelExtensions_Nodes_Coalesce(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 151 def visit_ArelExtensions_Nodes_Coalesce o, collector collector << "COALESCE(" o.expressions.each_with_index { |arg, i| collector << COMMA if i != 0 if i > 0 && o.left_node_type == :text if arg == '' || (arg.is_a?(Arel::Nodes::Quoted) && (arg.expr == '')) collector << "NULL" else collector << 'TO_CLOB(' collector = visit arg, collector collector << ')' end else collector = visit arg, collector end } collector << ")" collector end
visit_ArelExtensions_Nodes_Collate(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 109 def visit_ArelExtensions_Nodes_Collate o, collector if o.ai collector << "NLSSORT(" collector = visit o.expressions.first, collector collector << COMMA collector << "'NLS_SORT = BINARY_AI NLS_COMP = LINGUISTIC'" collector << ")" elsif o.ci collector << "NLSSORT(" collector = visit o.expressions.first, collector collector << COMMA collector << "'NLS_SORT = BINARY_CI NLS_COMP = LINGUISTIC'" collector << ")" else collector = visit o.expressions.first, collector end collector end
visit_ArelExtensions_Nodes_Concat(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 35 def visit_ArelExtensions_Nodes_Concat o, collector collector << '(' o.expressions.each_with_index { |arg, i| collector = visit o.convert_to_string_node(arg), collector collector << ' || ' unless i == o.expressions.length - 1 } collector << ')' collector end
visit_ArelExtensions_Nodes_DateAdd(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 438 def visit_ArelExtensions_Nodes_DateAdd o, collector collector << '(' collector = visit o.left, collector collector << ' + ' # (o.right.value >= 0 ? ' + ' : ' - ') collector = visit o.oracle_value(o.right), collector collector << ')' collector end
visit_ArelExtensions_Nodes_DateDiff(o, collector)
click to toggle source
:date is not possible in Oracle
since this type does not really exist
# File lib/arel_extensions/visitors/oracle.rb, line 179 def visit_ArelExtensions_Nodes_DateDiff o, collector lc = o.left_node_type == :ruby_date || o.left_node_type == :ruby_time rc = o.right_node_type == :ruby_date || o.right_node_type == :ruby_time if rc || o.right_node_type == :date || o.right_node_type == :datetime || o.right_node_type == :time collector << '(' collector << 'TO_DATE(' if lc collector = visit o.left, collector collector << ')' if lc collector << " - " collector << 'TO_DATE(' if rc collector = visit o.right, collector collector << ')' if rc collector << ')' if (o.left_node_type == :ruby_time || o.left_node_type == :datetime || o.left_node_type == :time) collector << ' * (CASE WHEN (TRUNC(' collector << 'TO_DATE(' if lc collector = visit o.left, collector collector << ')' if lc collector << COMMA collector << "'DDD') = " collector << 'TO_DATE(' if lc collector = visit o.left, collector collector << ')' if lc collector << ') THEN 1 ELSE 86400 END)' # converts to seconds end else collector << '(' collector = visit o.left, collector collector << ' - (' if o.right.is_a?(ArelExtensions::Nodes::Duration) o.right.with_interval = true end collector = visit o.right, collector collector << '))' collector end collector end
visit_ArelExtensions_Nodes_Duration(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 218 def visit_ArelExtensions_Nodes_Duration o, collector case o.left when 'wd', 'w' collector << "TO_CHAR(" collector = visit o.right, collector collector << COMMA collector = visit Arel::Nodes.build_quoted(DATE_MAPPING[o.left]), collector else right = case o.left when 'd','m','y' interval = 'DAY' o.right.cast(:date) when 'h','mn','s' interval = 'SECOND' o.right.cast(:datetime) when /i\z/ interval = DATE_MAPPING[o.left[0..-2]] collector << '(' collector = visit o.right, collector collector << ") * (INTERVAL '1' #{interval})" return collector else interval = nil o.right end collector << "EXTRACT(#{DATE_MAPPING[o.left]} FROM " collector = visit right, collector end collector << ")" collector << " * (INTERVAL '1' #{interval})" if interval && o.with_interval collector end
visit_ArelExtensions_Nodes_Format(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 447 def visit_ArelExtensions_Nodes_Format o, collector fmt = ArelExtensions::Visitors::strftime_to_format(o.iso_format, DATE_FORMAT_DIRECTIVES) collector << "TO_CHAR(" collector = visit o.left, collector collector << COMMA collector = visit Arel::Nodes.build_quoted(fmt), collector collector << ")" collector end
visit_ArelExtensions_Nodes_FormattedNumber(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 611 def visit_ArelExtensions_Nodes_FormattedNumber o, collector col = o.left.coalesce(0) comma = NUMBER_COMMA_MAPPING[o.locale] || '.,' comma_in_format = o.precision == 0 ? '' : 'D' nines_after = (1..o.precision-1).map{'9'}.join('')+'0' if comma.length == 1 options = Arel::Nodes.build_quoted("NLS_NUMERIC_CHARACTERS = '"+comma+" '") nines_before = ("999"*4+"990") else options = Arel::Nodes.build_quoted("NLS_NUMERIC_CHARACTERS = '"+comma+"'") nines_before = ("999G"*4+"990") end sign = ArelExtensions::Nodes::Case.new.when(col<0). then('-'). else(o.flags.include?('+') ? '+' : (o.flags.include?(' ') ? ' ' : '')) sign_length = o.flags.include?('+') || o.flags.include?(' ') ? Arel::Nodes.build_quoted(1) : ArelExtensions::Nodes::Case.new.when(col<0).then(1).else(0) if o.scientific_notation number = Arel::Nodes::NamedFunction.new('TO_CHAR',[ Arel::Nodes.build_quoted(col.abs), Arel::Nodes.build_quoted('FM'+nines_before+comma_in_format+nines_after+'EEEE'), options ]) if o.type == 'e' number = number.replace('E','e') end else number = Arel::Nodes::NamedFunction.new('TO_CHAR',[ Arel::Nodes.build_quoted(col.abs), Arel::Nodes.build_quoted('FM'+nines_before+comma_in_format+nines_after), options ]) end repeated_char = (o.width == 0) ? Arel::Nodes.build_quoted('') : ArelExtensions::Nodes::Case.new(). when(Arel::Nodes.build_quoted(o.width).abs-(number.length+sign_length)>0). then(Arel::Nodes.build_quoted( o.flags.include?('-') ? ' ' : (o.flags.include?('0') ? '0' : ' ') ).repeat(Arel::Nodes.build_quoted(o.width).abs-(number.length+sign_length)) ). else('') before = (!o.flags.include?('0'))&&(!o.flags.include?('-')) ? repeated_char : '' middle = (o.flags.include?('0'))&&(!o.flags.include?('-')) ? repeated_char : '' after = o.flags.include?('-') ? repeated_char : '' full_number = ArelExtensions::Nodes::Concat.new([ before, sign, middle, number, after ]) collector = visit ArelExtensions::Nodes::Concat.new([Arel::Nodes.build_quoted(o.prefix),full_number,Arel::Nodes.build_quoted(o.suffix)]), collector collector end
visit_ArelExtensions_Nodes_GroupConcat(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 128 def visit_ArelExtensions_Nodes_GroupConcat o, collector collector << "(LISTAGG(" collector = visit o.left, collector collector << COMMA collector = if o.separator && o.separator != 'NULL' visit o.separator, collector else visit Arel::Nodes.build_quoted(','), collector end collector << ") WITHIN GROUP (ORDER BY " if !o.order.blank? o.order.each_with_index do |order,i| collector << COMMA if i != 0 collector = visit order, collector end else collector = visit o.left, collector end collector << "))" collector end
visit_ArelExtensions_Nodes_IDoesNotMatch(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 95 def visit_ArelExtensions_Nodes_IDoesNotMatch o, collector collector << 'LOWER(' collector = visit o.left, collector collector << ') NOT LIKE LOWER(' collector = visit o.right, collector collector << ')' if o.escape collector << ' ESCAPE ' visit o.escape, collector else collector end end
visit_ArelExtensions_Nodes_IMatches(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 45 def visit_ArelExtensions_Nodes_IMatches o, collector collector << 'LOWER(' collector = visit o.left, collector collector << ') LIKE LOWER(' collector = visit o.right, collector collector << ')' if o.escape collector << ' ESCAPE ' visit o.escape, collector else collector end end
visit_ArelExtensions_Nodes_IsNotNull(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 323 def visit_ArelExtensions_Nodes_IsNotNull o, collector collector = visit o.expr, collector collector << ' IS NOT NULL' collector end
visit_ArelExtensions_Nodes_IsNull(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 317 def visit_ArelExtensions_Nodes_IsNull o, collector collector = visit o.expr, collector collector << ' IS NULL' collector end
visit_ArelExtensions_Nodes_Length(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 310 def visit_ArelExtensions_Nodes_Length o, collector collector << "LENGTH#{o.bytewise ? 'B' : ''}(" collector = visit o.expr, collector collector << ")" collector end
visit_ArelExtensions_Nodes_LevenshteinDistance(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 682 def visit_ArelExtensions_Nodes_LevenshteinDistance o, collector collector << "UTL_MATCH.edit_distance(" collector = visit o.left, collector collector << Arel::Visitors::ToSql::COMMA collector = visit o.right, collector collector << ')' collector end
visit_ArelExtensions_Nodes_Locate(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 358 def visit_ArelExtensions_Nodes_Locate o, collector collector << "INSTR(" o.expressions.each_with_index { |arg, i| collector << COMMA if i != 0 collector = visit arg, collector } collector << ")" collector end
visit_ArelExtensions_Nodes_Log10(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 15 def visit_ArelExtensions_Nodes_Log10 o, collector collector << "LOG(" o.expressions.each_with_index { |arg, i| collector << Arel::Visitors::ToSql::COMMA if i != 0 collector = visit arg, collector } collector << ",10)" collector end
visit_ArelExtensions_Nodes_Ltrim(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 404 def visit_ArelExtensions_Nodes_Ltrim o, collector collector << 'TRIM(LEADING ' if o.right.expr && SPECIAL_CHARS[o.right.expr] collector << SPECIAL_CHARS[o.right.expr] else collector = visit o.right, collector end collector << ' FROM ' collector = visit o.left, collector collector << ")" collector end
visit_ArelExtensions_Nodes_MD5(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 171 def visit_ArelExtensions_Nodes_MD5 o, collector collector << "LOWER (RAWTOHEX (DBMS_OBFUSCATION_TOOLKIT.md5(input => UTL_I18N.STRING_TO_RAW(" collector = visit o.left, collector collector << ", 'AL32UTF8'))))" collector end
visit_ArelExtensions_Nodes_NotBlank(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 434 def visit_ArelExtensions_Nodes_NotBlank o, collector visit o.expr.trim.length.coalesce(0).gt(0), collector end
visit_ArelExtensions_Nodes_Power(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 25 def visit_ArelExtensions_Nodes_Power o, collector collector << "POWER(" o.expressions.each_with_index { |arg, i| collector << Arel::Visitors::ToSql::COMMA if i != 0 collector = visit arg, collector } collector << ")" collector end
visit_ArelExtensions_Nodes_Rand(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 329 def visit_ArelExtensions_Nodes_Rand o, collector collector << "DBMS_RANDOM.VALUE(" if o.left && o.right collector = visit o.left, collector collector << COMMA collector = visit o.right, collector end collector << ")" collector end
visit_ArelExtensions_Nodes_Repeat(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 457 def visit_ArelExtensions_Nodes_Repeat o, collector collector << "LPAD(" collector = visit o.expressions[0], collector # can't put empty string, otherwise it wouldn't work collector << Arel::Visitors::ToSql::COMMA collector = visit o.expressions[1], collector collector << Arel::Visitors::ToSql::COMMA collector = visit o.expressions[0], collector collector << ")" collector end
visit_ArelExtensions_Nodes_Rtrim(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 417 def visit_ArelExtensions_Nodes_Rtrim o, collector collector << 'TRIM(TRAILING ' if o.right.expr && SPECIAL_CHARS[o.right.expr] collector << SPECIAL_CHARS[o.right.expr] else collector = visit o.right, collector end collector << ' FROM ' collector = visit o.left, collector collector << ")" collector end
visit_ArelExtensions_Nodes_SMatches(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 83 def visit_ArelExtensions_Nodes_SMatches o, collector collector = visit o.left, collector collector << ' LIKE ' collector = visit o.right, collector if o.escape collector << ' ESCAPE ' visit o.escape, collector else collector end end
visit_ArelExtensions_Nodes_Std(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 668 def visit_ArelExtensions_Nodes_Std o, collector collector << (o.unbiased_estimator ? "STDDEV_SAMP(" : "STDDEV_POP(") visit o.left, collector collector << ")" collector end
visit_ArelExtensions_Nodes_Substring(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 368 def visit_ArelExtensions_Nodes_Substring o, collector collector << "SUBSTR(" o.expressions.each_with_index { |arg, i| collector << COMMA if i != 0 collector = visit arg, collector } collector << ")" collector end
visit_ArelExtensions_Nodes_Trim(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 378 def visit_ArelExtensions_Nodes_Trim o, collector collector << 'TRIM(' # BOTH if o.right.expr && SPECIAL_CHARS[o.right.expr] collector << SPECIAL_CHARS[o.right.expr] else collector = visit o.right, collector end collector << ' FROM ' collector << '(' if o.left.is_a? ArelExtensions::Nodes::Trim if o.type_of_attribute(o.left) == :text collector << 'dbms_lob.SUBSTR(' collector = visit o.left, collector collector << COMMA collector << 'COALESCE(dbms_lob.GETLENGTH(' collector = visit o.left, collector collector << "), 0)" collector << COMMA collector << '1)' else collector = visit o.left, collector end collector << ')' if o.left.is_a? ArelExtensions::Nodes::Trim collector << ")" collector end
visit_ArelExtensions_Nodes_Variance(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 675 def visit_ArelExtensions_Nodes_Variance o, collector collector << (o.unbiased_estimator ? "VAR_SAMP(" : "VAR_POP(") visit o.left, collector collector << ")" collector end
visit_Arel_Attributes_Attribute(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 603 def visit_Arel_Attributes_Attribute o, collector join_name = o.relation.table_alias || o.relation.name if join_name.length > 30 join_name = Arel.shorten(join_name) end collector << "#{quote_table_name join_name}.#{quote_column_name o.name}" end
Also aliased as: old_visit_Arel_Attributes_Attribute
visit_Arel_Nodes_As(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 583 def visit_Arel_Nodes_As o, collector if o.left.is_a?(Arel::Nodes::Binary) collector << '(' collector = visit o.left, collector collector << ')' else collector = visit o.left, collector end quote = o.right.to_s =~ /(\A["].*["]\z)|\A[a-zA-Z_]*\z/ ? '' : '"' collector << " AS #{quote}" collector = visit o.right, collector collector << "#{quote}" collector end
Also aliased as: old_visit_Arel_Nodes_As
visit_Arel_Nodes_GreaterThan(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 541 def visit_Arel_Nodes_GreaterThan o, collector collector = visit get_time_converted(o.left), collector collector << " > " collector = visit get_time_converted(o.right), collector collector end
visit_Arel_Nodes_GreaterThanOrEqual(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 533 def visit_Arel_Nodes_GreaterThanOrEqual o, collector collector = visit get_time_converted(o.left), collector collector << " >= " collector = visit get_time_converted(o.right), collector collector end
visit_Arel_Nodes_LessThan(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 557 def visit_Arel_Nodes_LessThan o, collector collector = visit get_time_converted(o.left), collector collector << " < " collector = visit get_time_converted(o.right), collector collector end
visit_Arel_Nodes_LessThanOrEqual(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 549 def visit_Arel_Nodes_LessThanOrEqual o, collector collector = visit get_time_converted(o.left), collector collector << " <= " collector = visit get_time_converted(o.right), collector collector end
visit_Arel_Nodes_NotRegexp(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 349 def visit_Arel_Nodes_NotRegexp o, collector collector << " NOT REGEXP_LIKE(" collector = visit o.left, collector collector << COMMA collector = visit o.right, collector collector << ')' collector end
visit_Arel_Nodes_Regexp(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 340 def visit_Arel_Nodes_Regexp o, collector collector << " REGEXP_LIKE(" collector = visit o.left, collector collector << COMMA collector = visit o.right, collector collector << ')' collector end
visit_Arel_Nodes_SelectStatement(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 566 def visit_Arel_Nodes_SelectStatement o, collector if !(collector.value.blank? || (collector.value.is_a?(Array) && collector.value[0].blank?)) && o.limit.blank? && o.offset.blank? o = o.dup o.orders = [] end old_visit_Arel_Nodes_SelectStatement(o,collector) end
Also aliased as: old_visit_Arel_Nodes_SelectStatement
visit_Arel_Nodes_TableAlias(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 575 def visit_Arel_Nodes_TableAlias o, collector if o.name.length > 30 o = Arel::Table.new(o.table_name).alias(Base64.urlsafe_encode64(Digest::MD5.new.digest(o.name)).tr('=', '').tr('-', '_')) end old_visit_Arel_Nodes_TableAlias(o,collector) end
Also aliased as: old_visit_Arel_Nodes_TableAlias