@@ -62,30 +62,42 @@ internal static readonly ConcurrentDictionary<NpgsqlDatabaseInfoCacheKey, Npgsql
6262 /// Whether the backend supports range types.
6363 /// </summary>
6464 public virtual bool SupportsRangeTypes => Version . IsGreaterOrEqual ( 9 , 2 ) ;
65+
66+ /// <summary>
67+ /// Whether the backend supports multirange types.
68+ /// </summary>
69+ public virtual bool SupportsMultirangeTypes => Version . IsGreaterOrEqual ( 14 , 0 ) ;
70+
6571 /// <summary>
6672 /// Whether the backend supports enum types.
6773 /// </summary>
6874 public virtual bool SupportsEnumTypes => Version . IsGreaterOrEqual ( 8 , 3 ) ;
75+
6976 /// <summary>
7077 /// Whether the backend supports the CLOSE ALL statement.
7178 /// </summary>
7279 public virtual bool SupportsCloseAll => Version . IsGreaterOrEqual ( 8 , 3 ) ;
80+
7381 /// <summary>
7482 /// Whether the backend supports advisory locks.
7583 /// </summary>
7684 public virtual bool SupportsAdvisoryLocks => Version . IsGreaterOrEqual ( 8 , 2 ) ;
85+
7786 /// <summary>
7887 /// Whether the backend supports the DISCARD SEQUENCES statement.
7988 /// </summary>
8089 public virtual bool SupportsDiscardSequences => Version . IsGreaterOrEqual ( 9 , 4 ) ;
90+
8191 /// <summary>
8292 /// Whether the backend supports the UNLISTEN statement.
8393 /// </summary>
8494 public virtual bool SupportsUnlisten => Version . IsGreaterOrEqual ( 6 , 4 ) ; // overridden by PostgresDatabase
95+
8596 /// <summary>
8697 /// Whether the backend supports the DISCARD TEMP statement.
8798 /// </summary>
8899 public virtual bool SupportsDiscardTemp => Version . IsGreaterOrEqual ( 8 , 3 ) ;
100+
89101 /// <summary>
90102 /// Whether the backend supports the DISCARD statement.
91103 /// </summary>
@@ -105,19 +117,21 @@ internal static readonly ConcurrentDictionary<NpgsqlDatabaseInfoCacheKey, Npgsql
105117
106118 #region Types
107119
108- readonly List < PostgresBaseType > _baseTypesMutable = new ( ) ;
109- readonly List < PostgresArrayType > _arrayTypesMutable = new ( ) ;
110- readonly List < PostgresRangeType > _rangeTypesMutable = new ( ) ;
111- readonly List < PostgresEnumType > _enumTypesMutable = new ( ) ;
112- readonly List < PostgresCompositeType > _compositeTypesMutable = new ( ) ;
113- readonly List < PostgresDomainType > _domainTypesMutable = new ( ) ;
114-
115- internal IReadOnlyList < PostgresBaseType > BaseTypes => _baseTypesMutable ;
116- internal IReadOnlyList < PostgresArrayType > ArrayTypes => _arrayTypesMutable ;
117- internal IReadOnlyList < PostgresRangeType > RangeTypes => _rangeTypesMutable ;
118- internal IReadOnlyList < PostgresEnumType > EnumTypes => _enumTypesMutable ;
119- internal IReadOnlyList < PostgresCompositeType > CompositeTypes => _compositeTypesMutable ;
120- internal IReadOnlyList < PostgresDomainType > DomainTypes => _domainTypesMutable ;
120+ readonly List < PostgresBaseType > _baseTypesMutable = new ( ) ;
121+ readonly List < PostgresArrayType > _arrayTypesMutable = new ( ) ;
122+ readonly List < PostgresRangeType > _rangeTypesMutable = new ( ) ;
123+ readonly List < PostgresMultirangeType > _multirangeTypesMutable = new ( ) ;
124+ readonly List < PostgresEnumType > _enumTypesMutable = new ( ) ;
125+ readonly List < PostgresCompositeType > _compositeTypesMutable = new ( ) ;
126+ readonly List < PostgresDomainType > _domainTypesMutable = new ( ) ;
127+
128+ internal IReadOnlyList < PostgresBaseType > BaseTypes => _baseTypesMutable ;
129+ internal IReadOnlyList < PostgresArrayType > ArrayTypes => _arrayTypesMutable ;
130+ internal IReadOnlyList < PostgresRangeType > RangeTypes => _rangeTypesMutable ;
131+ internal IReadOnlyList < PostgresMultirangeType > MultirangeTypes => _multirangeTypesMutable ;
132+ internal IReadOnlyList < PostgresEnumType > EnumTypes => _enumTypesMutable ;
133+ internal IReadOnlyList < PostgresCompositeType > CompositeTypes => _compositeTypesMutable ;
134+ internal IReadOnlyList < PostgresDomainType > DomainTypes => _domainTypesMutable ;
121135
122136 /// <summary>
123137 /// Indexes backend types by their type OID.
@@ -216,6 +230,9 @@ internal void ProcessTypes()
216230 case PostgresRangeType rangeType :
217231 _rangeTypesMutable . Add ( rangeType ) ;
218232 continue ;
233+ case PostgresMultirangeType multirangeType :
234+ _multirangeTypesMutable . Add ( multirangeType ) ;
235+ continue ;
219236 case PostgresEnumType enumType :
220237 _enumTypesMutable . Add ( enumType ) ;
221238 continue ;
0 commit comments