sequel 0.1.9 → 0.1.9.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +6 -0
- data/Rakefile +1 -1
- data/lib/sequel.rb +4 -0
- data/lib/sequel/mysql.rb +15 -7
- data/spec/adapters/mysql_spec.rb +12 -0
- metadata +2 -2
data/CHANGELOG
CHANGED
data/Rakefile
CHANGED
@@ -6,7 +6,7 @@ require 'fileutils'
|
|
6
6
|
include FileUtils
|
7
7
|
|
8
8
|
NAME = "sequel"
|
9
|
-
VERS = "0.1.9"
|
9
|
+
VERS = "0.1.9.1"
|
10
10
|
CLEAN.include ['**/.*.sw?', 'pkg/*', '.config', 'doc/*', 'coverage/*']
|
11
11
|
RDOC_OPTS = ['--quiet', '--title', "Sequel: Concise ORM for Ruby",
|
12
12
|
"--opname", "index.html",
|
data/lib/sequel.rb
CHANGED
data/lib/sequel/mysql.rb
CHANGED
@@ -126,16 +126,24 @@ module Sequel
|
|
126
126
|
end
|
127
127
|
|
128
128
|
class Dataset < Sequel::Dataset
|
129
|
+
FIELD_EXPR_RE = /^([^\(]+\()?([^\.]+\.)?([^\s\)]+)(\))?(\s[Aa][Ss]\s(.+))?$/.freeze
|
130
|
+
FIELD_ORDER_RE = /^(.*) (DESC|ASC)$/.freeze
|
131
|
+
FIELD_NOT_QUOTABLE_RE = /^(`(.+)`)|\*$/.freeze
|
132
|
+
|
133
|
+
def quote_field(field)
|
134
|
+
field =~ FIELD_NOT_QUOTABLE_RE ? field : "`#{field}`"
|
135
|
+
end
|
136
|
+
|
129
137
|
def field_name(field)
|
130
138
|
f = field.is_a?(Symbol) ? field.to_field_name : field
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
139
|
+
case f
|
140
|
+
when FIELD_EXPR_RE:
|
141
|
+
$6 ? \
|
142
|
+
"#{$1}#{$2}#{quote_field($3)}#{$4} AS #{quote_field($6)}" : \
|
143
|
+
"#{$1}#{$2}#{quote_field($3)}#{$4}"
|
144
|
+
when FIELD_ORDER_RE: "#{quote_field($1)} #{$2}"
|
137
145
|
else
|
138
|
-
|
146
|
+
quote_field(f)
|
139
147
|
end
|
140
148
|
end
|
141
149
|
|
data/spec/adapters/mysql_spec.rb
CHANGED
@@ -78,9 +78,21 @@ context "A MySQL dataset" do
|
|
78
78
|
@d.select(:value.MAX).sql.should == \
|
79
79
|
'SELECT max(`value`) FROM items'
|
80
80
|
|
81
|
+
@d.select(:items__value.MAX).sql.should == \
|
82
|
+
'SELECT max(items.`value`) FROM items'
|
83
|
+
|
81
84
|
@d.order(:name.DESC).sql.should == \
|
82
85
|
'SELECT * FROM items ORDER BY `name` DESC'
|
83
86
|
|
87
|
+
@d.select('items.name AS item_name').sql.should == \
|
88
|
+
'SELECT items.`name` AS `item_name` FROM items'
|
89
|
+
|
90
|
+
@d.select('`name`').sql.should == \
|
91
|
+
'SELECT `name` FROM items'
|
92
|
+
|
93
|
+
@d.select('max(items.`name`) as `max_name`').sql.should == \
|
94
|
+
'SELECT max(items.`name`) AS `max_name` FROM items'
|
95
|
+
|
84
96
|
@d.insert_sql(:value => 333).should == \
|
85
97
|
'INSERT INTO items (`value`) VALUES (333)'
|
86
98
|
end
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
|
|
3
3
|
specification_version: 1
|
4
4
|
name: sequel
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.1.9
|
7
|
-
date: 2007-07-
|
6
|
+
version: 0.1.9.1
|
7
|
+
date: 2007-07-22 00:00:00 +03:00
|
8
8
|
summary: Concise ORM for Ruby.
|
9
9
|
require_paths:
|
10
10
|
- lib
|