@@ -455,7 +455,9 @@ public static function buildColumnDefinition(): array
455455 ColumnBuilder::string ()->collation ('C ' ),
456456 ];
457457
458- if (version_compare (TestConnection::getServerVersion (), '13 ' , '< ' )) {
458+ $ serverVersion = TestConnection::getServerVersion ();
459+
460+ if (version_compare ($ serverVersion , '13 ' , '< ' )) {
459461 $ uuidExpression = "uuid_in(overlay(overlay(md5(now()::text || random()::text) placing '4' from 13) placing "
460462 . ' to_hex(floor(4 * random() + 8)::int)::text from 17)::cstring) ' ;
461463
@@ -464,6 +466,19 @@ public static function buildColumnDefinition(): array
464466 $ values ['uuidPrimaryKey() ' ][0 ] = "uuid PRIMARY KEY DEFAULT $ uuidExpression " ;
465467 }
466468
469+ if (version_compare ($ serverVersion , '14 ' , '>= ' )) {
470+ $ multiRangeTypes = [
471+ ['int4multirange ' , ColumnBuilder::int4MultiRange ()],
472+ ['int8multirange ' , ColumnBuilder::int8MultiRange ()],
473+ ['nummultirange ' , ColumnBuilder::numMultiRange ()],
474+ ['tsmultirange ' , ColumnBuilder::tsMultiRange ()],
475+ ['tstzmultirange ' , ColumnBuilder::tsTzMultiRange ()],
476+ ['datemultirange ' , ColumnBuilder::dateMultiRange ()],
477+ ];
478+ } else {
479+ $ multiRangeTypes = [];
480+ }
481+
467482 return [
468483 ...$ values ,
469484 ['text[] ' , ColumnBuilder::array ()->dbType ('text[] ' )],
@@ -474,6 +489,13 @@ public static function buildColumnDefinition(): array
474489 ['timestamptz ' , 'timestamp with time zone ' ],
475490 ['time(3) ' , 'time(3) without time zone ' ],
476491 ['timetz(0) ' , 'time(0) with time zone ' ],
492+ ['int4range ' , ColumnBuilder::int4Range ()],
493+ ['int8range ' , ColumnBuilder::int8Range ()],
494+ ['numrange ' , ColumnBuilder::numRange ()],
495+ ['tsrange ' , ColumnBuilder::tsRange ()],
496+ ['tstzrange ' , ColumnBuilder::tsTzRange ()],
497+ ['daterange ' , ColumnBuilder::dateRange ()],
498+ ...$ multiRangeTypes ,
477499 ];
478500 }
479501
0 commit comments