Skip to content

Commit 50d12c3

Browse files
committed
Binary basic columns should be limitable
1 parent 63b6854 commit 50d12c3

File tree

4 files changed

+38
-34
lines changed

4 files changed

+38
-34
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
- [#1244](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1244) Allow INSERT statements with SELECT notation
66
- [#1247](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1247) Fix queries with date and date-time placeholder conditions
7+
- [#1249](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1249) Binary basic columns should be limitable
78

89
## v7.2.1
910

lib/active_record/connection_adapters/sqlserver/schema_statements.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ def check_constraints(table_name)
291291
end
292292

293293
def type_to_sql(type, limit: nil, precision: nil, scale: nil, **)
294-
type_limitable = %w(string integer float char nchar varchar nvarchar).include?(type.to_s)
294+
type_limitable = %w(string integer float char nchar varchar nvarchar binary_basic).include?(type.to_s)
295295
limit = nil unless type_limitable
296296

297297
case type.to_s

test/cases/schema_dumper_test_sqlserver.rb

Lines changed: 35 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -93,39 +93,41 @@ class SchemaDumperTestSQLServer < ActiveRecord::TestCase
9393
assert_line :binary_col, type: "binary"
9494

9595
# Our type methods.
96-
_(columns["real_col"].sql_type).must_equal "real"
97-
_(columns["money_col"].sql_type).must_equal "money"
98-
_(columns["smalldatetime_col"].sql_type).must_equal "smalldatetime"
99-
_(columns["datetime2_col"].sql_type).must_equal "datetime2(7)"
100-
_(columns["datetimeoffset"].sql_type).must_equal "datetimeoffset(7)"
101-
_(columns["smallmoney_col"].sql_type).must_equal "smallmoney"
102-
_(columns["char_col"].sql_type).must_equal "char(1)"
103-
_(columns["varchar_col"].sql_type).must_equal "varchar(8000)"
104-
_(columns["text_basic_col"].sql_type).must_equal "text"
105-
_(columns["nchar_col"].sql_type).must_equal "nchar(1)"
106-
_(columns["ntext_col"].sql_type).must_equal "ntext"
107-
_(columns["binary_basic_col"].sql_type).must_equal "binary(1)"
108-
_(columns["varbinary_col"].sql_type).must_equal "varbinary(8000)"
109-
_(columns["uuid_col"].sql_type).must_equal "uniqueidentifier"
110-
_(columns["sstimestamp_col"].sql_type).must_equal "timestamp"
111-
_(columns["json_col"].sql_type).must_equal "nvarchar(max)"
112-
113-
assert_line :real_col, type: "real"
114-
assert_line :money_col, type: "money", precision: 19, scale: 4
115-
assert_line :smalldatetime_col, type: "smalldatetime"
116-
assert_line :datetime2_col, type: "datetime", precision: 7
117-
assert_line :datetimeoffset, type: "datetimeoffset", precision: 7
118-
assert_line :smallmoney_col, type: "smallmoney", precision: 10, scale: 4
119-
assert_line :char_col, type: "char", limit: 1
120-
assert_line :varchar_col, type: "varchar"
121-
assert_line :text_basic_col, type: "text_basic"
122-
assert_line :nchar_col, type: "nchar", limit: 1
123-
assert_line :ntext_col, type: "ntext"
124-
assert_line :binary_basic_col, type: "binary_basic", limit: 1
125-
assert_line :varbinary_col, type: "varbinary"
126-
assert_line :uuid_col, type: "uuid"
127-
assert_line :sstimestamp_col, type: "ss_timestamp", null: false
128-
assert_line :json_col, type: "text"
96+
_(columns["real_col"].sql_type).must_equal "real"
97+
_(columns["money_col"].sql_type).must_equal "money"
98+
_(columns["smalldatetime_col"].sql_type).must_equal "smalldatetime"
99+
_(columns["datetime2_col"].sql_type).must_equal "datetime2(7)"
100+
_(columns["datetimeoffset"].sql_type).must_equal "datetimeoffset(7)"
101+
_(columns["smallmoney_col"].sql_type).must_equal "smallmoney"
102+
_(columns["char_col"].sql_type).must_equal "char(1)"
103+
_(columns["varchar_col"].sql_type).must_equal "varchar(8000)"
104+
_(columns["text_basic_col"].sql_type).must_equal "text"
105+
_(columns["nchar_col"].sql_type).must_equal "nchar(1)"
106+
_(columns["ntext_col"].sql_type).must_equal "ntext"
107+
_(columns["binary_basic_col"].sql_type).must_equal "binary(1)"
108+
_(columns["binary_basic_16_col"].sql_type).must_equal "binary(16)"
109+
_(columns["varbinary_col"].sql_type).must_equal "varbinary(8000)"
110+
_(columns["uuid_col"].sql_type).must_equal "uniqueidentifier"
111+
_(columns["sstimestamp_col"].sql_type).must_equal "timestamp"
112+
_(columns["json_col"].sql_type).must_equal "nvarchar(max)"
113+
114+
assert_line :real_col, type: "real"
115+
assert_line :money_col, type: "money", precision: 19, scale: 4
116+
assert_line :smalldatetime_col, type: "smalldatetime"
117+
assert_line :datetime2_col, type: "datetime", precision: 7
118+
assert_line :datetimeoffset, type: "datetimeoffset", precision: 7
119+
assert_line :smallmoney_col, type: "smallmoney", precision: 10, scale: 4
120+
assert_line :char_col, type: "char", limit: 1
121+
assert_line :varchar_col, type: "varchar"
122+
assert_line :text_basic_col, type: "text_basic"
123+
assert_line :nchar_col, type: "nchar", limit: 1
124+
assert_line :ntext_col, type: "ntext"
125+
assert_line :binary_basic_col, type: "binary_basic", limit: 1
126+
assert_line :binary_basic_16_col, type: "binary_basic", limit: 16
127+
assert_line :varbinary_col, type: "varbinary"
128+
assert_line :uuid_col, type: "uuid"
129+
assert_line :sstimestamp_col, type: "ss_timestamp", null: false
130+
assert_line :json_col, type: "text"
129131
end
130132

131133
it "dump column collation" do

test/schema/sqlserver_specific_schema.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
t.nchar :nchar_col
3434
t.ntext :ntext_col
3535
t.binary_basic :binary_basic_col
36+
t.binary_basic :binary_basic_16_col, limit: 16
3637
t.varbinary :varbinary_col
3738
t.uuid :uuid_col
3839
t.ss_timestamp :sstimestamp_col

0 commit comments

Comments
 (0)