Skip to content

Commit 4cfc002

Browse files
committed
[FIX] Doh! Forgot to add files to previous commit.
1 parent a4253d1 commit 4cfc002

File tree

5 files changed

+75
-2
lines changed

5 files changed

+75
-2
lines changed

lib/sql_tree/node/begin_statement.rb

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
module SQLTree::Node
2+
class BeginStatement < Base
3+
def to_sql(options = {})
4+
"BEGIN"
5+
end
6+
7+
def self.parse(tokens)
8+
tokens.consume(SQLTree::Token::BEGIN)
9+
return self.new
10+
end
11+
end
12+
end

lib/sql_tree/node/commit_statement.rb

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
module SQLTree::Node
2+
class CommitStatement < Base
3+
def to_sql(options = {})
4+
"COMMIT"
5+
end
6+
7+
def self.parse(tokens)
8+
tokens.consume(SQLTree::Token::COMMIT)
9+
return self.new
10+
end
11+
end
12+
end

lib/sql_tree/node/set_query.rb

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
module SQLTree::Node
2+
3+
# The <tt>DeleteQuery</tt> node represents an SQL DELETE query.
4+
#
5+
# This node has two children: <tt>table</tt> and <tt>where</tt>.
6+
class SetQuery < Base
7+
8+
# The variable (<tt>SQLTree::Node::Field</tt>) that is being set.
9+
child :variable
10+
11+
# The <tt>SQLTree::Node::Expression</tt> value that the variable is being
12+
# set to.
13+
child :value
14+
15+
# Initializes a new DeleteQuery instance.
16+
def initialize(variable, value)
17+
@variable, @value = variable, value
18+
end
19+
20+
# Generates an SQL DELETE query from this node.
21+
def to_sql(options = {})
22+
sql = "SET #{variable.to_sql(options)}"
23+
sql << " TO #{value.to_sql(options)}"
24+
sql
25+
end
26+
27+
# Parses a SET query from a stream of tokens.
28+
# <tt>tokens</tt>:: The token stream to parse from, which is an instance
29+
# of <tt> SQLTree::Parser</tt>.
30+
def self.parse(tokens)
31+
tokens.consume(SQLTree::Token::SET)
32+
variable = SQLTree::Node::Expression::Field.parse(tokens)
33+
tokens.consume(SQLTree::Token::TO)
34+
value = SQLTree::Node::Expression::Value.parse(tokens)
35+
return self.new(variable, value)
36+
end
37+
end
38+
end

spec/unit/set_query_spec.rb

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
require "#{File.dirname(__FILE__)}/../spec_helper"
2+
3+
describe SQLTree::Node::SetQuery do
4+
5+
it "should parse a set query correctly" do
6+
set = SQLTree::Node::SetQuery["SET foo TO 'var'"]
7+
set.variable.should == SQLTree::Node::Expression::Field.new("foo")
8+
set.value.should == SQLTree::Node::Expression::Value.new("var")
9+
end
10+
11+
end

sql_tree.gemspec

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@ Gem::Specification.new do |s|
2222

2323
# Do not modify the files and test_files values by hand, because this will
2424
# automatically by them gem release script.
25-
s.files = %w(spec/unit/select_query_spec.rb spec/unit/insert_query_spec.rb spec/spec_helper.rb lib/sql_tree/tokenizer.rb lib/sql_tree/node/join.rb .gitignore lib/sql_tree/node/ordering.rb LICENSE spec/lib/matchers.rb lib/sql_tree/parser.rb sql_tree.gemspec spec/unit/tokenizer_spec.rb spec/unit/expression_node_spec.rb spec/unit/delete_query_spec.rb spec/unit/leaf_node_spec.rb lib/sql_tree/token.rb lib/sql_tree/node/table_reference.rb lib/sql_tree/node/source.rb lib/sql_tree/node/insert_query.rb Rakefile tasks/github-gem.rake spec/unit/update_query_spec.rb spec/integration/parse_and_generate_spec.rb lib/sql_tree/node/select_query.rb lib/sql_tree/node.rb README.rdoc spec/integration/api_spec.rb lib/sql_tree/node/expression.rb lib/sql_tree/node/delete_query.rb lib/sql_tree/node/select_declaration.rb lib/sql_tree.rb lib/sql_tree/node/update_query.rb)
26-
s.test_files = %w(spec/unit/select_query_spec.rb spec/unit/insert_query_spec.rb spec/unit/tokenizer_spec.rb spec/unit/expression_node_spec.rb spec/unit/delete_query_spec.rb spec/unit/leaf_node_spec.rb spec/unit/update_query_spec.rb spec/integration/parse_and_generate_spec.rb spec/integration/api_spec.rb)
25+
s.files = %w(spec/spec_helper.rb lib/sql_tree/tokenizer.rb lib/sql_tree/node/join.rb sql_tree.gemspec spec/unit/select_query_spec.rb spec/lib/matchers.rb lib/sql_tree/parser.rb .gitignore lib/sql_tree/node/source.rb LICENSE spec/unit/expression_node_spec.rb spec/unit/delete_query_spec.rb Gemfile spec/unit/leaf_node_spec.rb lib/sql_tree/token.rb Rakefile spec/unit/update_query_spec.rb spec/unit/tokenizer_spec.rb spec/integration/api_spec.rb lib/sql_tree/node/select_query.rb lib/sql_tree/node.rb README.rdoc lib/sql_tree/node/table_reference.rb lib/sql_tree/node/insert_query.rb tasks/github-gem.rake spec/integration/parse_and_generate_spec.rb lib/sql_tree/node/expression.rb spec/unit/insert_query_spec.rb lib/sql_tree/node/select_declaration.rb lib/sql_tree.rb lib/sql_tree/node/update_query.rb lib/sql_tree/node/ordering.rb lib/sql_tree/node/delete_query.rb)
26+
s.test_files = %w(spec/unit/select_query_spec.rb spec/unit/expression_node_spec.rb spec/unit/delete_query_spec.rb spec/unit/leaf_node_spec.rb spec/unit/update_query_spec.rb spec/unit/tokenizer_spec.rb spec/integration/api_spec.rb spec/integration/parse_and_generate_spec.rb spec/unit/insert_query_spec.rb)
2727
end

0 commit comments

Comments
 (0)