Skip to content

Commit 197f114

Browse files
committed
Make sure ROLLBACK statements are actually parsed and add some specs for control statements.
1 parent 6c8cfbb commit 197f114

File tree

2 files changed

+25
-7
lines changed

2 files changed

+25
-7
lines changed

lib/sql_tree/parser.rb

+8-7
Original file line numberDiff line numberDiff line change
@@ -112,13 +112,14 @@ def debug
112112
#
113113
def parse!
114114
case self.peek
115-
when SQLTree::Token::SELECT then SQLTree::Node::SelectQuery.parse(self)
116-
when SQLTree::Token::INSERT then SQLTree::Node::InsertQuery.parse(self)
117-
when SQLTree::Token::DELETE then SQLTree::Node::DeleteQuery.parse(self)
118-
when SQLTree::Token::UPDATE then SQLTree::Node::UpdateQuery.parse(self)
119-
when SQLTree::Token::BEGIN then SQLTree::Node::BeginStatement.parse(self)
120-
when SQLTree::Token::COMMIT then SQLTree::Node::CommitStatement.parse(self)
121-
when SQLTree::Token::SET then SQLTree::Node::SetQuery.parse(self)
115+
when SQLTree::Token::SELECT; SQLTree::Node::SelectQuery.parse(self)
116+
when SQLTree::Token::INSERT; SQLTree::Node::InsertQuery.parse(self)
117+
when SQLTree::Token::DELETE; SQLTree::Node::DeleteQuery.parse(self)
118+
when SQLTree::Token::UPDATE; SQLTree::Node::UpdateQuery.parse(self)
119+
when SQLTree::Token::BEGIN; SQLTree::Node::BeginStatement.parse(self)
120+
when SQLTree::Token::COMMIT; SQLTree::Node::CommitStatement.parse(self)
121+
when SQLTree::Token::ROLLBACK; SQLTree::Node::RollbackStatement.parse(self)
122+
when SQLTree::Token::SET; SQLTree::Node::SetQuery.parse(self)
122123
else raise UnexpectedToken.new(self.peek)
123124
end
124125
end

spec/unit/control_statements_spec.rb

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
require 'spec_helper'
2+
3+
describe SQLTree, 'for transaction statements' do
4+
5+
it "should parse a BEGIN statement correctly" do
6+
SQLTree['BEGIN'].should be_kind_of(SQLTree::Node::BeginStatement)
7+
end
8+
9+
it "should parse a COMMIT statement correctly" do
10+
SQLTree['COMMIT'].should be_kind_of(SQLTree::Node::CommitStatement)
11+
end
12+
13+
it "should parse a ROLLBACK statement correctly" do
14+
SQLTree['ROLLBACK'].should be_kind_of(SQLTree::Node::RollbackStatement)
15+
end
16+
17+
end

0 commit comments

Comments
 (0)