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 529 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.column_of(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 483 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 72 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 60 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 611 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 431 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 252 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 152 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 110 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 36 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 439 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 180 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 219 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.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 448 def visit_ArelExtensions_Nodes_Format o, collector fmt = ArelExtensions::Visitors::strftime_to_format(o.iso_format, DATE_FORMAT_DIRECTIVES) collector << 'TO_CHAR(' collector << 'CAST(' if o.time_zone collector = visit o.left, collector case o.time_zone when Hash src_tz, dst_tz = o.time_zone.first collector << ' as timestamp) at time zone ' collector = visit Arel.quoted(src_tz), collector collecto < ' at time zone ' collector = visit Arel.quoted(dst_tz), collector when String collector << ' as timestamp) at time zone ' collector = visit Arel.quoted(o.time_zone), collector end collector << COMMA collector = visit Arel.quoted(fmt), collector collector << ')' collector end
visit_ArelExtensions_Nodes_FormattedNumber(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 624 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.quoted("NLS_NUMERIC_CHARACTERS = '" + comma + " '") nines_before = ('999' * 4 + '990') else options = Arel.quoted("NLS_NUMERIC_CHARACTERS = '" + comma + "'") nines_before = ('999G' * 4 + '990') end sign = Arel.when(col < 0). then('-'). else(o.flags.include?('+') ? '+' : (o.flags.include?(' ') ? ' ' : '')) sign_length = o.flags.include?('+') || o.flags.include?(' ') ? Arel.quoted(1) : Arel.when(col < 0).then(1).else(0) if o.scientific_notation number = Arel::Nodes::NamedFunction.new('TO_CHAR', [ Arel.quoted(col.abs), Arel.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.quoted(col.abs), Arel.quoted('FM' + nines_before + comma_in_format + nines_after), options ]) end repeated_char = (o.width == 0) ? Arel.quoted('') : ArelExtensions::Nodes::Case.new. when(Arel.quoted(o.width).abs - (number.length + sign_length) > 0). then(Arel.quoted( o.flags.include?('-') ? ' ' : (o.flags.include?('0') ? '0' : ' ') ).repeat(Arel.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.quoted(o.prefix), full_number, Arel.quoted(o.suffix)]), collector collector end
visit_ArelExtensions_Nodes_GroupConcat(o, collector)
click to toggle source
# File lib/arel_extensions/visitors/oracle.rb, line 129 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.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 96 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 46 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 324 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 318 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 311 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 695 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 359 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 16 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 405 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 172 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 435 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 26 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 330 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 470 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 418 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 84 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 681 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 369 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 379 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 688 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 616 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 596 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 554 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 546 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 570 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 562 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 350 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 341 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 579 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 588 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