@@ -22,6 +22,7 @@ module Spanner
2222 #
2323 module SchemaStatements
2424 VERSION_7_2 = Gem ::Version . create "7.2.0"
25+ VERSION_8_1 = Gem ::Version . create "8.1.0"
2526
2627 def current_database
2728 @connection . database_id
@@ -116,18 +117,37 @@ def column_definitions table_name
116117 information_schema { |i | i . table_columns table_name }
117118 end
118119
119- def new_column_from_field _table_name , field , _definitions = nil
120- Spanner ::Column . new \
121- field . name ,
122- field . default ,
123- fetch_type_metadata ( field . spanner_type ,
124- field . ordinal_position ,
125- field . allow_commit_timestamp ,
126- field . generated ,
127- is_identity : field . is_identity ) ,
128- field . nullable ,
129- field . default_function ,
130- primary_key : field . primary_key
120+ if ActiveRecord . gem_version < VERSION_8_1
121+ def new_column_from_field _table_name , field , _definitions = nil
122+ Spanner ::Column . new \
123+ field . name ,
124+ field . default ,
125+ fetch_type_metadata ( field . spanner_type ,
126+ field . ordinal_position ,
127+ field . allow_commit_timestamp ,
128+ field . generated ,
129+ is_identity : field . is_identity ) ,
130+ field . nullable ,
131+ field . default_function ,
132+ primary_key : field . primary_key
133+ end
134+ else
135+ def new_column_from_field _table_name , field , _definitions = nil
136+ cast_type = type_map . lookup field . type
137+ raise ArgumentError , "unknown type: `#{ field . type } `" if cast_type . nil?
138+ Spanner ::Column . new \
139+ field . name ,
140+ cast_type ,
141+ field . default ,
142+ fetch_type_metadata ( field . spanner_type ,
143+ field . ordinal_position ,
144+ field . allow_commit_timestamp ,
145+ field . generated ,
146+ is_identity : field . is_identity ) ,
147+ field . nullable ,
148+ field . default_function ,
149+ primary_key : field . primary_key
150+ end
131151 end
132152
133153 def fetch_type_metadata sql_type , ordinal_position = nil , allow_commit_timestamp = nil , generated = nil ,
0 commit comments