class Arel::Visitors::PostgreSQL
Private Instance Methods
column_for(attr)
click to toggle source
Calls superclass method
# File lib/arel/visitors/postgresql_extensions.rb, line 6 def column_for attr return nil if attr.is_a?(Arel::Attributes::Key) super end
visit_Arel_Attributes_Cast(o, collector)
click to toggle source
# File lib/arel/visitors/postgresql_extensions.rb, line 85 def visit_Arel_Attributes_Cast(o, collector) collector << "(" visit(o.relation, collector) collector << ")::#{o.name}" collector end
visit_Arel_Attributes_Key(o, collector, last_key = true)
click to toggle source
# File lib/arel/visitors/postgresql_extensions.rb, line 40 def visit_Arel_Attributes_Key(o, collector, last_key = true) if o.relation.is_a?(Arel::Attributes::Key) visit_Arel_Attributes_Key(o.relation, collector, false) if last_key collector << o.name.to_s collector << "}'" else collector << o.name.to_s collector << "," end else visit(o.relation, collector) collector << "\#>'{" << o.name.to_s collector << (last_key ? "}'" : ",") end collector end
visit_Arel_Nodes_Ascending(o, collector)
click to toggle source
# File lib/arel/visitors/postgresql_extensions.rb, line 11 def visit_Arel_Nodes_Ascending o, collector case o.nulls when :nulls_first then visit(o.expr, collector) << ' ASC NULLS FIRST' when :nulls_last then visit(o.expr, collector) << ' ASC NULLS LAST' else visit(o.expr, collector) << ' ASC' end end
visit_Arel_Nodes_BinaryValue(o, collector)
click to toggle source
# File lib/arel/visitors/postgresql_extensions.rb, line 143 def visit_Arel_Nodes_BinaryValue(o, collector) collector << quote(@connection.escape_bytea(o.expr)) collector end
visit_Arel_Nodes_Descending(o, collector)
click to toggle source
# File lib/arel/visitors/postgresql_extensions.rb, line 19 def visit_Arel_Nodes_Descending o, collector case o.nulls when :nulls_first then visit(o.expr, collector) << ' DESC NULLS FIRST' when :nulls_last then visit(o.expr, collector) << ' DESC NULLS LAST' else visit(o.expr, collector) << ' DESC' end end
visit_Arel_Nodes_Excludes(o, collector)
click to toggle source
# File lib/arel/visitors/postgresql_extensions.rb, line 31 def visit_Arel_Nodes_Excludes o, collector collector << 'NOT (' visit o.left, collector collector << ' @> ' visit o.right, collector collector << ')' collector end
visit_Arel_Nodes_Geometry(o, collector)
click to toggle source
# File lib/arel/visitors/postgresql_extensions.rb, line 163 def visit_Arel_Nodes_Geometry o, collector collector << quote(o.value.as_binary.each_byte.map { |b| b.to_s(16).rjust(2, '0') }.join) collector end
visit_Arel_Nodes_HasAnyKey(o, collector)
click to toggle source
# File lib/arel/visitors/postgresql_extensions.rb, line 76 def visit_Arel_Nodes_HasAnyKey(o, collector) right = o.right collector = visit o.left, collector collector << " ?| array[" << Array(right).map { |v| quote(v.to_s) }.join(',') << "]" collector end
visit_Arel_Nodes_HasKey(o, collector)
click to toggle source
# File lib/arel/visitors/postgresql_extensions.rb, line 58 def visit_Arel_Nodes_HasKey(o, collector) right = o.right collector = visit o.left, collector collector << " ? " << quote(right.to_s) collector end
visit_Arel_Nodes_HasKeys(o, collector)
click to toggle source
# File lib/arel/visitors/postgresql_extensions.rb, line 67 def visit_Arel_Nodes_HasKeys(o, collector) right = o.right collector = visit o.left, collector collector << " ?& array[" << Array(right).map { |v| quote(v.to_s) }.join(',') << "]" collector end
visit_Arel_Nodes_HexEncodedBinaryValue(o, collector)
click to toggle source
# File lib/arel/visitors/postgresql_extensions.rb, line 148 def visit_Arel_Nodes_HexEncodedBinaryValue(o, collector) collector << quote("\\x" + o.expr) collector end
visit_Arel_Nodes_Intersects(o, collector)
click to toggle source
# File lib/arel/visitors/postgresql_extensions.rb, line 153 def visit_Arel_Nodes_Intersects o, collector visit(Arel::Nodes::NamedFunction.new('ST_Intersects', [ o.left, o.right ]), collector) collector end
visit_Arel_Nodes_RandomOrdering(o, collector)
click to toggle source
# File lib/arel/visitors/postgresql_extensions.rb, line 27 def visit_Arel_Nodes_RandomOrdering o, collector collector << "RANDOM()" end
visit_Arel_Nodes_TSMatch(o, collector)
click to toggle source
# File lib/arel/visitors/postgresql_extensions.rb, line 92 def visit_Arel_Nodes_TSMatch(o, collector) visit o.left, collector collector << ' @@ ' visit o.right, collector collector end
visit_Arel_Nodes_TSQuery(o, collector)
click to toggle source
# File lib/arel/visitors/postgresql_extensions.rb, line 110 def visit_Arel_Nodes_TSQuery(o, collector) collector << 'to_tsquery(' if o.language visit(o.language, collector) collector << ', ' end visit(o.expression, collector) collector << ')' collector end
visit_Arel_Nodes_TSRank(o, collector)
click to toggle source
# File lib/arel/visitors/postgresql_extensions.rb, line 121 def visit_Arel_Nodes_TSRank(o, collector) collector << 'ts_rank(' visit(o.tsvector, collector) collector << ', ' visit(o.tsquery, collector) collector << ')' collector end
visit_Arel_Nodes_TSRankCD(o, collector)
click to toggle source
# File lib/arel/visitors/postgresql_extensions.rb, line 130 def visit_Arel_Nodes_TSRankCD(o, collector) collector << 'ts_rank_cd(' visit(o.tsvector, collector) collector << ', ' visit(o.tsquery, collector) if o.normalization collector << ', ' visit(o.normalization, collector) end collector << ')' collector end
visit_Arel_Nodes_TSVector(o, collector)
click to toggle source
# File lib/arel/visitors/postgresql_extensions.rb, line 99 def visit_Arel_Nodes_TSVector(o, collector) collector << 'to_tsvector(' if o.language visit(o.language, collector) collector << ', ' end visit(o.attribute, collector) collector << ')' collector end
visit_Arel_Nodes_Within(o, collector)
click to toggle source
# File lib/arel/visitors/postgresql_extensions.rb, line 158 def visit_Arel_Nodes_Within o, collector visit(Arel::Nodes::NamedFunction.new('ST_Within', [ o.left, o.right ]), collector) collector end