From 428eb7e79b37466b26cdaee9de38682ee8e89229 Mon Sep 17 00:00:00 2001 From: Brian Lopez Date: Sun, 25 Apr 2010 21:45:40 -0700 Subject: [PATCH] Revert "Revert "for DATE columns, return ruby Date object instead of Time (didn't realize I could create them from y,m,d integers without ActiveSupport)"" This reverts commit 5e4080e4e56580c212f6991cbd69360752d2b3db. --- ext/mysql2_ext.c | 2 +- lib/active_record/connection_adapters/mysql2_adapter.rb | 2 +- spec/mysql2/result_spec.rb | 9 ++++++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ext/mysql2_ext.c b/ext/mysql2_ext.c index 0f2b02a..4ec401f 100644 --- a/ext/mysql2_ext.c +++ b/ext/mysql2_ext.c @@ -393,7 +393,7 @@ static VALUE rb_mysql_result_fetch_row(int argc, VALUE * argv, VALUE self) { val = Qnil; } else { strptime(row[i], "%F", &parsedTime); - val = rb_funcall(rb_cTime, intern_local, 3, INT2NUM(1900+parsedTime.tm_year), INT2NUM(parsedTime.tm_mon+1), INT2NUM(parsedTime.tm_mday)); + val = rb_funcall(cDate, intern_new, 3, INT2NUM(1900+parsedTime.tm_year), INT2NUM(parsedTime.tm_mon+1), INT2NUM(parsedTime.tm_mday)); } break; case MYSQL_TYPE_TINY_BLOB: diff --git a/lib/active_record/connection_adapters/mysql2_adapter.rb b/lib/active_record/connection_adapters/mysql2_adapter.rb index c6c69d1..9728aa0 100644 --- a/lib/active_record/connection_adapters/mysql2_adapter.rb +++ b/lib/active_record/connection_adapters/mysql2_adapter.rb @@ -39,7 +39,7 @@ module ActiveRecord when :float then Float when :decimal then BigDecimal when :datetime then Time - when :date then Time + when :date then Date when :timestamp then Time when :time then Time when :text, :string then String diff --git a/spec/mysql2/result_spec.rb b/spec/mysql2/result_spec.rb index b2b2623..fa63608 100644 --- a/spec/mysql2/result_spec.rb +++ b/spec/mysql2/result_spec.rb @@ -140,7 +140,6 @@ describe Mysql2::Result do end { - 'date_test' => 'DATE', 'date_time_test' => 'DATETIME', 'timestamp_test' => 'TIMESTAMP', 'time_test' => 'TIME' @@ -150,6 +149,14 @@ describe Mysql2::Result do end end + { + 'date_test' => 'DATE' + }.each do |field, type| + it "should return a Date for #{type}" do + @test_result[field].class.should eql(Date) + end + end + { 'char_test' => 'CHAR', 'varchar_test' => 'VARCHAR',