blob: 135348580d1b3fda0b12453446cee2ac986dde8a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
require 'helper'
module Arel
module Visitors
describe 'the mysql visitor' do
before do
@visitor = MySQL.new Table.engine
end
###
# :'(
# http://dev.mysql.com/doc/refman/5.0/en/select.html#id3482214
it 'defaults limit to 18446744073709551615' do
stmt = Nodes::SelectStatement.new
stmt.offset = Nodes::Offset.new(1)
sql = @visitor.accept(stmt)
sql.must_be_like "SELECT FROM DUAL LIMIT 18446744073709551615 OFFSET 1"
end
it "should escape LIMIT" do
sc = Arel::Nodes::UpdateStatement.new
sc.limit = "omg"
assert_match(/LIMIT 'omg'/, @visitor.accept(sc))
end
it 'uses DUAL for empty from' do
stmt = Nodes::SelectStatement.new
sql = @visitor.accept(stmt)
sql.must_be_like "SELECT FROM DUAL"
end
it 'uses FOR UPDATE when locking' do
stmt = Nodes::SelectStatement.new
stmt.lock = Nodes::Lock.new
sql = @visitor.accept(stmt)
sql.must_be_like "SELECT FROM DUAL FOR UPDATE"
end
end
end
end
|