sequel 0.1.9 → 0.1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|