# File lib/arel/visitors/to_sql.rb, line 286 286: def quote value, column = nil 287: @connection.quote value, column 288: end
# File lib/arel/visitors/to_sql.rb, line 294 294: def quote_column_name name 295: @quoted_columns[name] ||= @connection.quote_column_name(name) 296: end
# File lib/arel/visitors/to_sql.rb, line 290 290: def quote_table_name name 291: @quoted_tables[name] ||= @connection.quote_table_name(name) 292: end
# File lib/arel/visitors/to_sql.rb, line 253 253: def visit_Arel_Attributes_Attribute o 254: @last_column = o.column 255: join_name = o.relation.table_alias || o.relation.name 256: "#{quote_table_name join_name}.#{quote_column_name o.name}" 257: end
# File lib/arel/visitors/to_sql.rb, line 216 216: def visit_Arel_Nodes_And o 217: "#{visit o.left} AND #{visit o.right}" 218: end
# File lib/arel/visitors/to_sql.rb, line 224 224: def visit_Arel_Nodes_Assignment o 225: right = quote(o.right, o.left.column) 226: "#{visit o.left} = #{right}" 227: end
# File lib/arel/visitors/to_sql.rb, line 141 141: def visit_Arel_Nodes_Avg o 142: "AVG(#{o.expressions.map { |x| 143: visit x }.join(', ')})#{o.alias ? " AS #{visit o.alias}" : ''}" 144: end
# File lib/arel/visitors/to_sql.rb, line 150 150: def visit_Arel_Nodes_Between o 151: "#{visit o.left} BETWEEN #{visit o.right}" 152: end
# File lib/arel/visitors/to_sql.rb, line 120 120: def visit_Arel_Nodes_Count o 121: "COUNT(#{o.distinct ? 'DISTINCT ' : ''}#{o.expressions.map { |x| 122: visit x 123: }.join(', ')})#{o.alias ? " AS #{visit o.alias}" : ''}" 124: end
# File lib/arel/visitors/to_sql.rb, line 24 24: def visit_Arel_Nodes_DeleteStatement o 25: [ 26: "DELETE FROM #{visit o.relation}", 27: ("WHERE #{o.wheres.map { |x| visit x }.join ' AND '}" unless o.wheres.empty?) 28: ].compact.join ' ' 29: end
# File lib/arel/visitors/to_sql.rb, line 174 174: def visit_Arel_Nodes_DoesNotMatch o 175: "#{visit o.left} NOT LIKE #{visit o.right}" 176: end
# File lib/arel/visitors/to_sql.rb, line 229 229: def visit_Arel_Nodes_Equality o 230: right = o.right 231: 232: if right.nil? 233: "#{visit o.left} IS NULL" 234: else 235: "#{visit o.left} = #{visit right}" 236: end 237: end
# File lib/arel/visitors/to_sql.rb, line 64 64: def visit_Arel_Nodes_Exists o 65: "EXISTS (#{visit o.select_stmt})#{ 66: o.alias ? " AS #{visit o.alias}" : ''}" 67: end
# File lib/arel/visitors/to_sql.rb, line 158 158: def visit_Arel_Nodes_GreaterThan o 159: "#{visit o.left} > #{visit o.right}" 160: end
# File lib/arel/visitors/to_sql.rb, line 154 154: def visit_Arel_Nodes_GreaterThanOrEqual o 155: "#{visit o.left} >= #{visit o.right}" 156: end
# File lib/arel/visitors/to_sql.rb, line 116 116: def visit_Arel_Nodes_Group o 117: visit o.expr 118: end
# File lib/arel/visitors/to_sql.rb, line 108 108: def visit_Arel_Nodes_Grouping o 109: "(#{visit o.expr})" 110: end
# File lib/arel/visitors/to_sql.rb, line 95 95: def visit_Arel_Nodes_Having o 96: "HAVING #{visit o.expr}" 97: end
# File lib/arel/visitors/to_sql.rb, line 202 202: def visit_Arel_Nodes_In o 203: right = o.right 204: "#{visit o.left} IN (#{ 205: right.empty? ? 'NULL' : right.map { |x| visit x }.join(', ') 206: })" 207: end
# File lib/arel/visitors/to_sql.rb, line 186 186: def visit_Arel_Nodes_InnerJoin o 187: "#{visit o.left} INNER JOIN #{visit o.right} #{visit o.constraint if o.constraint}" 188: end
# File lib/arel/visitors/to_sql.rb, line 52 52: def visit_Arel_Nodes_InsertStatement o 53: [ 54: "INSERT INTO #{visit o.relation}", 55: 56: ("(#{o.columns.map { |x| 57: quote_column_name x.name 58: }.join ', '})" unless o.columns.empty?), 59: 60: (visit o.values if o.values), 61: ].compact.join ' ' 62: end
# File lib/arel/visitors/to_sql.rb, line 166 166: def visit_Arel_Nodes_LessThan o 167: "#{visit o.left} < #{visit o.right}" 168: end
# File lib/arel/visitors/to_sql.rb, line 162 162: def visit_Arel_Nodes_LessThanOrEqual o 163: "#{visit o.left} <= #{visit o.right}" 164: end
FIXME: this does nothing on SQLLite3, but should do things on other databases.
# File lib/arel/visitors/to_sql.rb, line 105 105: def visit_Arel_Nodes_Lock o 106: end
# File lib/arel/visitors/to_sql.rb, line 170 170: def visit_Arel_Nodes_Matches o 171: "#{visit o.left} LIKE #{visit o.right}" 172: end
# File lib/arel/visitors/to_sql.rb, line 131 131: def visit_Arel_Nodes_Max o 132: "MAX(#{o.expressions.map { |x| 133: visit x }.join(', ')})#{o.alias ? " AS #{visit o.alias}" : ''}" 134: end
# File lib/arel/visitors/to_sql.rb, line 136 136: def visit_Arel_Nodes_Min o 137: "MIN(#{o.expressions.map { |x| 138: visit x }.join(', ')})#{o.alias ? " AS #{visit o.alias}" : ''}" 139: end
# File lib/arel/visitors/to_sql.rb, line 239 239: def visit_Arel_Nodes_NotEqual o 240: right = o.right 241: 242: if right.nil? 243: "#{visit o.left} IS NOT NULL" 244: else 245: "#{visit o.left} != #{visit right}" 246: end 247: end
# File lib/arel/visitors/to_sql.rb, line 209 209: def visit_Arel_Nodes_NotIn o 210: right = o.right 211: "#{visit o.left} NOT IN (#{ 212: right.empty? ? 'NULL' : right.map { |x| visit x }.join(', ') 213: })" 214: end
# File lib/arel/visitors/to_sql.rb, line 99 99: def visit_Arel_Nodes_Offset o 100: "OFFSET #{visit o.value}" 101: end
# File lib/arel/visitors/to_sql.rb, line 190 190: def visit_Arel_Nodes_On o 191: "ON #{visit o.expr}" 192: end
# File lib/arel/visitors/to_sql.rb, line 220 220: def visit_Arel_Nodes_Or o 221: "#{visit o.left} OR #{visit o.right}" 222: end
# File lib/arel/visitors/to_sql.rb, line 112 112: def visit_Arel_Nodes_Ordering o 113: "#{visit o.expr} #{o.descending? ? 'DESC' : 'ASC'}" 114: end
# File lib/arel/visitors/to_sql.rb, line 182 182: def visit_Arel_Nodes_OuterJoin o 183: "#{visit o.left} LEFT OUTER JOIN #{visit o.right} #{visit o.constraint}" 184: end
# File lib/arel/visitors/to_sql.rb, line 85 85: def visit_Arel_Nodes_SelectCore o 86: [ 87: "SELECT #{o.projections.map { |x| visit x }.join ', '}", 88: ("FROM #{visit o.froms}" if o.froms), 89: ("WHERE #{o.wheres.map { |x| visit x }.join ' AND ' }" unless o.wheres.empty?), 90: ("GROUP BY #{o.groups.map { |x| visit x }.join ', ' }" unless o.groups.empty?), 91: (visit(o.having) if o.having), 92: ].compact.join ' ' 93: end
# File lib/arel/visitors/to_sql.rb, line 75 75: def visit_Arel_Nodes_SelectStatement o 76: [ 77: o.cores.map { |x| visit_Arel_Nodes_SelectCore x }.join, 78: ("ORDER BY #{o.orders.map { |x| visit x }.join(', ')}" unless o.orders.empty?), 79: ("LIMIT #{o.limit}" if o.limit), 80: (visit(o.offset) if o.offset), 81: (visit(o.lock) if o.lock), 82: ].compact.join ' ' 83: end
# File lib/arel/visitors/to_sql.rb, line 178 178: def visit_Arel_Nodes_StringJoin o 179: "#{visit o.left} #{visit o.right}" 180: end
# File lib/arel/visitors/to_sql.rb, line 126 126: def visit_Arel_Nodes_Sum o 127: "SUM(#{o.expressions.map { |x| 128: visit x }.join(', ')})#{o.alias ? " AS #{visit o.alias}" : ''}" 129: end
# File lib/arel/visitors/to_sql.rb, line 146 146: def visit_Arel_Nodes_TableAlias o 147: "#{visit o.relation} #{quote_table_name o.name}" 148: end
# File lib/arel/visitors/to_sql.rb, line 249 249: def visit_Arel_Nodes_UnqualifiedColumn o 250: "#{quote_column_name o.name}" 251: end
# File lib/arel/visitors/to_sql.rb, line 31 31: def visit_Arel_Nodes_UpdateStatement o 32: if o.orders.empty? && o.limit.nil? 33: wheres = o.wheres 34: else 35: stmt = Nodes::SelectStatement.new 36: core = stmt.cores.first 37: core.froms = o.relation 38: core.projections = [o.relation.primary_key] 39: stmt.limit = o.limit 40: stmt.orders = o.orders 41: 42: wheres = [Nodes::In.new(o.relation.primary_key, [stmt])] 43: end 44: 45: [ 46: "UPDATE #{visit o.relation}", 47: ("SET #{o.values.map { |value| visit value }.join ', '}" unless o.values.empty?), 48: ("WHERE #{wheres.map { |x| visit x }.join ' AND '}" unless wheres.empty?) 49: ].compact.join ' ' 50: end
# File lib/arel/visitors/to_sql.rb, line 69 69: def visit_Arel_Nodes_Values o 70: "VALUES (#{o.expressions.zip(o.columns).map { |value, column| 71: quote(value, column && column.column) 72: }.join ', '})" 73: end
# File lib/arel/visitors/to_sql.rb, line 194 194: def visit_Arel_Table o 195: if o.table_alias 196: "#{quote_table_name o.name} #{quote_table_name o.table_alias}" 197: else 198: quote_table_name o.name 199: end 200: end
# File lib/arel/visitors/to_sql.rb, line 265 265: def visit_Fixnum o; o end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.