From d846bc12a0247de8ce203676dbd59b51bcfebbb4 Mon Sep 17 00:00:00 2001 From: Aidan Haran Date: Thu, 19 Mar 2020 15:55:39 +0000 Subject: [PATCH] Set default time precision when registering time type --- .../connection_adapters/sqlserver/type/time.rb | 5 +---- lib/active_record/connection_adapters/sqlserver_adapter.rb | 6 ++++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/lib/active_record/connection_adapters/sqlserver/type/time.rb b/lib/active_record/connection_adapters/sqlserver/type/time.rb index 6a7354f33..f8bc0dec8 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/time.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/time.rb @@ -4,9 +4,6 @@ module SQLServer module Type class Time < ActiveRecord::Type::Time - # Default fractional scale for 'time' (See https://docs.microsoft.com/en-us/sql/t-sql/data-types/time-transact-sql) - DEFAULT_FRACTIONAL_SCALE = 7 - include TimeValueFractional2 def serialize(value) @@ -45,7 +42,7 @@ def cast_value(value) end def fractional_scale - precision || DEFAULT_FRACTIONAL_SCALE + precision end end diff --git a/lib/active_record/connection_adapters/sqlserver_adapter.rb b/lib/active_record/connection_adapters/sqlserver_adapter.rb index cc8564320..0b875cb10 100644 --- a/lib/active_record/connection_adapters/sqlserver_adapter.rb +++ b/lib/active_record/connection_adapters/sqlserver_adapter.rb @@ -41,6 +41,9 @@ class SQLServerAdapter < AbstractAdapter ADAPTER_NAME = 'SQLServer'.freeze + # Default precision for 'time' (See https://docs.microsoft.com/en-us/sql/t-sql/data-types/time-transact-sql) + DEFAULT_TIME_PRECISION = 7 + attr_reader :spid cattr_accessor :cs_equality_operator, instance_accessor: false @@ -297,8 +300,7 @@ def initialize_type_map(m = type_map) end m.register_type 'smalldatetime', SQLServer::Type::SmallDateTime.new m.register_type %r{\Atime}i do |sql_type| - scale = extract_scale(sql_type) - precision = extract_precision(sql_type) + precision = extract_precision(sql_type) || DEFAULT_TIME_PRECISION SQLServer::Type::Time.new precision: precision end # Character Strings