Skip to content

Commit c8c913d

Browse files
author
Dray Lacy
committed
Changed QualifiedColumn's initializer to accept a Table node and a Column node.
1 parent 73b5f88 commit c8c913d

File tree

5 files changed

+27
-27
lines changed

5 files changed

+27
-27
lines changed

lib/sql/parser.racc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ rule
176176

177177
column_reference
178178
: qualifier period column_name { result = SQL::Statement::QualifiedColumn.new(val[0], val[2]) }
179-
| column_name { result = SQL::Statement::Column.new(val[0]) }
179+
| column_name
180180

181181
qualifier
182182
: table_name
@@ -194,7 +194,7 @@ rule
194194

195195
# sql module
196196
column_name
197-
: identifier
197+
: identifier { result = SQL::Statement::Column.new(val[0]) }
198198

199199
# literals
200200
general_literal

lib/sql/parser.racc.rb

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ module SQL
1414

1515
class Parser < Racc::Parser
1616

17-
module_eval <<'..end lib/sql/parser.racc modeval..idb11a60ebf3', 'lib/sql/parser.racc', 223
17+
module_eval <<'..end lib/sql/parser.racc modeval..id47df124798', 'lib/sql/parser.racc', 223
1818
1919
def self.parse(sql)
2020
new.scan_str(sql)
2121
end
22-
..end lib/sql/parser.racc modeval..idb11a60ebf3
22+
..end lib/sql/parser.racc modeval..id47df124798
2323

2424
##### racc 1.4.5 generates ###
2525

@@ -111,7 +111,7 @@ def self.parse(sql)
111111
1, 91, :_reduce_none,
112112
1, 91, :_reduce_none,
113113
3, 72, :_reduce_86,
114-
1, 72, :_reduce_87,
114+
1, 72, :_reduce_none,
115115
1, 95, :_reduce_none,
116116
4, 92, :_reduce_89,
117117
1, 92, :_reduce_none,
@@ -120,7 +120,7 @@ def self.parse(sql)
120120
4, 96, :_reduce_93,
121121
4, 96, :_reduce_94,
122122
4, 96, :_reduce_95,
123-
1, 56, :_reduce_none,
123+
1, 56, :_reduce_96,
124124
1, 94, :_reduce_97,
125125
1, 94, :_reduce_none,
126126
1, 97, :_reduce_none,
@@ -1020,12 +1020,7 @@ def _reduce_86( val, _values, result )
10201020
end
10211021
.,.,
10221022

1023-
module_eval <<'.,.,', 'lib/sql/parser.racc', 178
1024-
def _reduce_87( val, _values, result )
1025-
result = SQL::Statement::Column.new(val[0])
1026-
result
1027-
end
1028-
.,.,
1023+
# reduce 87 omitted
10291024

10301025
# reduce 88 omitted
10311026

@@ -1073,7 +1068,12 @@ def _reduce_95( val, _values, result )
10731068
end
10741069
.,.,
10751070

1076-
# reduce 96 omitted
1071+
module_eval <<'.,.,', 'lib/sql/parser.racc', 196
1072+
def _reduce_96( val, _values, result )
1073+
result = SQL::Statement::Column.new(val[0])
1074+
result
1075+
end
1076+
.,.,
10771077

10781078
module_eval <<'.,.,', 'lib/sql/parser.racc', 200
10791079
def _reduce_97( val, _values, result )

lib/sql/sql_visitor.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,15 +182,15 @@ def visit_Table(o)
182182
end
183183

184184
def visit_QualifiedColumn(o)
185-
"#{visit(o.table)}.#{o.name}"
185+
"#{visit(o.table)}.#{visit(o.column)}"
186186
end
187187

188188
def visit_Column(o)
189189
o.name
190190
end
191191

192192
def visit_As(o)
193-
"#{visit(o.value)} AS #{o.name}"
193+
"#{visit(o.value)} AS #{visit(o.name)}"
194194
end
195195

196196
def visit_Multiply(o)

lib/sql/statement.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -260,13 +260,13 @@ def initialize(name)
260260
end
261261

262262
class QualifiedColumn < Node
263-
def initialize(table, name)
263+
def initialize(table, column)
264264
@table = table
265-
@name = name
265+
@column = column
266266
end
267267

268268
attr_reader :table
269-
attr_reader :name
269+
attr_reader :column
270270
end
271271

272272
class Column < Node

test/test_statement.rb

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,31 +29,31 @@ def test_from_clause
2929
end
3030

3131
def test_full_outer_join
32-
assert_sql 't1 FULL OUTER JOIN t2 ON t1.a = t2.a', SQL::Statement::FullOuterJoin.new(SQL::Statement::Table.new('t1'), SQL::Statement::Table.new('t2'), SQL::Statement::Equals.new(SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t1'), 'a'), SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t2'), 'a')))
32+
assert_sql 't1 FULL OUTER JOIN t2 ON t1.a = t2.a', SQL::Statement::FullOuterJoin.new(SQL::Statement::Table.new('t1'), SQL::Statement::Table.new('t2'), SQL::Statement::Equals.new(SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t1'), SQL::Statement::Column.new('a')), SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t2'), SQL::Statement::Column.new('a'))))
3333
end
3434

3535
def test_full_join
36-
assert_sql 't1 FULL JOIN t2 ON t1.a = t2.a', SQL::Statement::FullJoin.new(SQL::Statement::Table.new('t1'), SQL::Statement::Table.new('t2'), SQL::Statement::Equals.new(SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t1'), 'a'), SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t2'), 'a')))
36+
assert_sql 't1 FULL JOIN t2 ON t1.a = t2.a', SQL::Statement::FullJoin.new(SQL::Statement::Table.new('t1'), SQL::Statement::Table.new('t2'), SQL::Statement::Equals.new(SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t1'), SQL::Statement::Column.new('a')), SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t2'), SQL::Statement::Column.new('a'))))
3737
end
3838

3939
def test_right_outer_join
40-
assert_sql 't1 RIGHT OUTER JOIN t2 ON t1.a = t2.a', SQL::Statement::RightOuterJoin.new(SQL::Statement::Table.new('t1'), SQL::Statement::Table.new('t2'), SQL::Statement::Equals.new(SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t1'), 'a'), SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t2'), 'a')))
40+
assert_sql 't1 RIGHT OUTER JOIN t2 ON t1.a = t2.a', SQL::Statement::RightOuterJoin.new(SQL::Statement::Table.new('t1'), SQL::Statement::Table.new('t2'), SQL::Statement::Equals.new(SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t1'), SQL::Statement::Column.new('a')), SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t2'), SQL::Statement::Column.new('a'))))
4141
end
4242

4343
def test_right_join
44-
assert_sql 't1 RIGHT JOIN t2 ON t1.a = t2.a', SQL::Statement::RightJoin.new(SQL::Statement::Table.new('t1'), SQL::Statement::Table.new('t2'), SQL::Statement::Equals.new(SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t1'), 'a'), SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t2'), 'a')))
44+
assert_sql 't1 RIGHT JOIN t2 ON t1.a = t2.a', SQL::Statement::RightJoin.new(SQL::Statement::Table.new('t1'), SQL::Statement::Table.new('t2'), SQL::Statement::Equals.new(SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t1'), SQL::Statement::Column.new('a')), SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t2'), SQL::Statement::Column.new('a'))))
4545
end
4646

4747
def test_left_outer_join
48-
assert_sql 't1 LEFT OUTER JOIN t2 ON t1.a = t2.a', SQL::Statement::LeftOuterJoin.new(SQL::Statement::Table.new('t1'), SQL::Statement::Table.new('t2'), SQL::Statement::Equals.new(SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t1'), 'a'), SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t2'), 'a')))
48+
assert_sql 't1 LEFT OUTER JOIN t2 ON t1.a = t2.a', SQL::Statement::LeftOuterJoin.new(SQL::Statement::Table.new('t1'), SQL::Statement::Table.new('t2'), SQL::Statement::Equals.new(SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t1'), SQL::Statement::Column.new('a')), SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t2'), SQL::Statement::Column.new('a'))))
4949
end
5050

5151
def test_left_join
52-
assert_sql 't1 LEFT JOIN t2 ON t1.a = t2.a', SQL::Statement::LeftJoin.new(SQL::Statement::Table.new('t1'), SQL::Statement::Table.new('t2'), SQL::Statement::Equals.new(SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t1'), 'a'), SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t2'), 'a')))
52+
assert_sql 't1 LEFT JOIN t2 ON t1.a = t2.a', SQL::Statement::LeftJoin.new(SQL::Statement::Table.new('t1'), SQL::Statement::Table.new('t2'), SQL::Statement::Equals.new(SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t1'), SQL::Statement::Column.new('a')), SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t2'), SQL::Statement::Column.new('a'))))
5353
end
5454

5555
def test_inner_join
56-
assert_sql 't1 INNER JOIN t2 ON t1.a = t2.a', SQL::Statement::InnerJoin.new(SQL::Statement::Table.new('t1'), SQL::Statement::Table.new('t2'), SQL::Statement::Equals.new(SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t1'), 'a'), SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t2'), 'a')))
56+
assert_sql 't1 INNER JOIN t2 ON t1.a = t2.a', SQL::Statement::InnerJoin.new(SQL::Statement::Table.new('t1'), SQL::Statement::Table.new('t2'), SQL::Statement::Equals.new(SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t1'), SQL::Statement::Column.new('a')), SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('t2'), SQL::Statement::Column.new('a'))))
5757
end
5858

5959
def test_cross_join
@@ -168,15 +168,15 @@ def test_table
168168
end
169169

170170
def test_qualified_column
171-
assert_sql 'users.id', SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('users'), 'id')
171+
assert_sql 'users.id', SQL::Statement::QualifiedColumn.new(SQL::Statement::Table.new('users'), SQL::Statement::Column.new('id'))
172172
end
173173

174174
def test_column
175175
assert_sql 'id', SQL::Statement::Column.new('id')
176176
end
177177

178178
def test_as
179-
assert_sql '1 AS a', SQL::Statement::As.new(SQL::Statement::Integer.new(1), 'a')
179+
assert_sql '1 AS a', SQL::Statement::As.new(SQL::Statement::Integer.new(1), SQL::Statement::Column.new('a'))
180180
end
181181

182182
def test_multiply

0 commit comments

Comments
 (0)