From 9073cef8669b9f43dbeb83e306be3445d62566f8 Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Fri, 12 Jan 2007 05:44:28 +0000 Subject: SQLServer: handle [quoted] table names. Closes #6635. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5891 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- .../fixtures/db_definitions/sqlserver.drop.sql | 1 + .../test/fixtures/db_definitions/sqlserver.sql | 8 ++++++++ activerecord/test/table_name_test_sqlserver.rb | 23 ++++++++++++++++++++++ 3 files changed, 32 insertions(+) create mode 100644 activerecord/test/table_name_test_sqlserver.rb (limited to 'activerecord/test') diff --git a/activerecord/test/fixtures/db_definitions/sqlserver.drop.sql b/activerecord/test/fixtures/db_definitions/sqlserver.drop.sql index b157d7c0a7..e8327f0826 100644 --- a/activerecord/test/fixtures/db_definitions/sqlserver.drop.sql +++ b/activerecord/test/fixtures/db_definitions/sqlserver.drop.sql @@ -30,3 +30,4 @@ DROP TABLE fk_test_has_pk; DROP TABLE keyboards; DROP TABLE legacy_things; DROP TABLE numeric_data; +DROP TABLE [order]; diff --git a/activerecord/test/fixtures/db_definitions/sqlserver.sql b/activerecord/test/fixtures/db_definitions/sqlserver.sql index 7b6f1d7afd..50e1938d0a 100644 --- a/activerecord/test/fixtures/db_definitions/sqlserver.sql +++ b/activerecord/test/fixtures/db_definitions/sqlserver.sql @@ -228,3 +228,11 @@ CREATE TABLE numeric_data ( my_house_population decimal(2), decimal_number_with_default decimal(3,2) DEFAULT 2.78 ); + +CREATE TABLE [order] ( + id int NOT NULL IDENTITY(1, 1) PRIMARY KEY, + color varchar(255), + fruit_size varchar(255), + texture varchar(255), + flavor varchar(255) +); diff --git a/activerecord/test/table_name_test_sqlserver.rb b/activerecord/test/table_name_test_sqlserver.rb new file mode 100644 index 0000000000..c2d1711599 --- /dev/null +++ b/activerecord/test/table_name_test_sqlserver.rb @@ -0,0 +1,23 @@ +require 'abstract_unit' +require "#{File.dirname(__FILE__)}/../lib/active_record/schema" + +if ActiveRecord::Base.connection.supports_migrations? + class Order < ActiveRecord::Base + self.table_name = '[order]' + end + + class TableNameTest < Test::Unit::TestCase + self.use_transactional_fixtures = false + + # Ensures Model.columns works when using SQLServer escape characters. + # Enables legacy schemas using SQL reserved words as table names. + # Should work with table names with spaces as well ('table name'). + def test_escaped_table_name + assert_nothing_raised do + ActiveRecord::Base.connection.select_all 'SELECT * FROM [order]' + end + assert_equal '[order]', Order.table_name + assert_equal 5, Order.columns.length + end + end +end -- cgit v1.2.3