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 CHANGED
@@ -1,3 +1,9 @@
1
+ === 0.1.9.1 (2007-07-22)
2
+
3
+ * Improved robustness of MySQL::Dataset#field_name.
4
+
5
+ * Added Sequel.single_threaded= convenience method.
6
+
1
7
  === 0.1.9 (2007-07-21)
2
8
 
3
9
  * Fixed #update_sql and #insert_sql to support field quoting by calling #field_name.
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
@@ -25,6 +25,10 @@ module Sequel #:nodoc:
25
25
  end
26
26
 
27
27
  alias_method :open, :connect
28
+
29
+ def single_threaded=(value)
30
+ Database.single_threaded = value
31
+ end
28
32
  end
29
33
  end
30
34
 
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
- if f =~ /^(([^\(]*)\(\*\))|\*$/
132
- f
133
- elsif f =~ /^([^\(]*)\(([^\*\)]*)\)$/
134
- "#{$1}(`#{$2}`)"
135
- elsif f =~ /^(.*) (DESC|ASC)$/
136
- "`#{$1}` #{$2}"
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
- "`#{f}`"
146
+ quote_field(f)
139
147
  end
140
148
  end
141
149
 
@@ -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-21 00:00:00 +03:00
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