From 51babb3362d36ceb6a701ae67c0b625a5f421ede Mon Sep 17 00:00:00 2001 From: Brian Lopez Date: Wed, 21 Apr 2010 10:28:25 -0700 Subject: [PATCH] for DATE columns, return ruby Date object instead of Time (didn't realize I could create them from y,m,d integers without ActiveSupport) --- 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 e5f6210..0cf5a55 100644 --- a/ext/mysql2_ext.c +++ b/ext/mysql2_ext.c @@ -383,7 +383,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 6e2784d..af7666a 100644 --- a/lib/active_record/connection_adapters/mysql2_adapter.rb +++ b/lib/active_record/connection_adapters/mysql2_adapter.rb @@ -21,7 +21,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',