@@ -216,9 +216,9 @@ module Squeal.PostgreSQL.Binary
216216 -- * Only
217217 , Only (..)
218218 -- * Oid
219− , OidOf (..)
220− , OidOfParam (..)
221− , OidOfField (..)
219+ , HasOid (..)
220+ , HasOidParam (..)
221+ , HasAliasedOid (..)
222222 ) where
223223
224224import BinaryParser
@@ -312,24 +312,24 @@ instance Aeson.ToJSON x => ToParam (Json x) 'PGjson where
312312instance Aeson.ToJSON x => ToParam (Jsonb x) 'PGjsonb where
313313 toParam = K . Encoding.jsonb_bytes
314314 . Lazy.ByteString.toStrict . Aeson.encode . getJsonb
315−instance (ToNullityParam x ty, ty ~ nullity pg, OidOf pg)
315+instance (ToNullityParam x ty, ty ~ nullity pg, HasOid pg)
316316 => ToParam (VarArray [x]) ('PGvararray ty) where
317317 toParam = K
318318 . Encoding.array_foldable
319319 (getOid (oidOf @pg)) (unK . toNullityParam @x @ty)
320320 . getVarArray
321−instance (ToParam x pg, OidOf pg)
321+instance (ToParam x pg, HasOid pg)
322322 => ToParam (VarArray (Vector x)) ('PGvararray ('NotNull pg)) where
323323 toParam = K
324324 . Encoding.array_vector (getOid (oidOf @pg)) (unK . toParam @x @pg)
325325 . getVarArray
326−instance (ToParam x pg, OidOf pg)
326+instance (ToParam x pg, HasOid pg)
327327 => ToParam (VarArray (Vector (Maybe x))) ('PGvararray ('Null pg)) where
328328 toParam = K
329329 . Encoding.nullableArray_vector
330330 (getOid (oidOf @pg)) (unK . toParam @x @pg)
331331 . getVarArray
332−instance (ToFixArray x dims ty, ty ~ nullity pg, OidOf pg)
332+instance (ToFixArray x dims ty, ty ~ nullity pg, HasOid pg)
333333 => ToParam (FixArray x) ('PGfixarray dims ty) where
334334 toParam = K . Encoding.array (getOid (oidOf @pg))
335335 . unK . unK . toFixArray @x @dims @ty . getFixArray
@@ -356,7 +356,7 @@ instance
356356 ( SListI fields
357357 , IsRecord x xs
358358 , AllZip ToField xs fields
359− , All OidOfField fields
359+ , All HasAliasedOid fields
360360 ) => ToParam (Composite x) ('PGcomposite fields) where
361361 toParam =
362362 let
@@ -364,7 +364,7 @@ instance
364364 encoders = htrans (Proxy @ToField) toField
365365
366366 composite
367− :: All OidOfField row
367+ :: All HasAliasedOid row
368368 => NP (K (Maybe Encoding.Encoding)) row
369369 -> K Encoding.Encoding ('PGcomposite row)
370370 composite fields = K $
@@ -381,18 +381,18 @@ instance
381381 int32BE (fromIntegral (lengthSList (Proxy @xs))) <>
382382 let
383383 each
384− :: OidOfField field
384+ :: HasAliasedOid field
385385 => K (Maybe Encoding.Encoding) field
386386 -> Encoding.Encoding
387387 each (K field :: K (Maybe Encoding.Encoding) field) =
388− word32BE (getOid (oidOfField @field))
388+ word32BE (getOid (aliasedOid @field))
389389 <> case field of
390390 Nothing -> int64BE (-1)
391391 Just value ->
392392 int32BE (fromIntegral (builderLength value))
393393 <> value
394394 in
395− hcfoldMap (Proxy @OidOfField) each fields
395+ hcfoldMap (Proxy @HasAliasedOid) each fields
396396
397397 in
398398 composite . encoders . toRecord . getComposite
@@ -402,118 +402,118 @@ instance
402402-- >>> :set -XTypeApplications
403403-- >>> oidOf @'PGbool
404404-- Oid 16
405−class OidOf (ty :: PGType) where oidOf :: LibPQ.Oid
406−instance OidOf 'PGbool where oidOf = LibPQ.Oid 16
407−instance OidOf ('PGfixarray ns (null 'PGbool)) where oidOf = LibPQ.Oid 1000
408−instance OidOf ('PGvararray (null 'PGbool)) where oidOf = LibPQ.Oid 1000
409−instance OidOf 'PGint2 where oidOf = LibPQ.Oid 21
410−instance OidOf ('PGfixarray ns (null 'PGint2)) where oidOf = LibPQ.Oid 1005
411−instance OidOf ('PGvararray (null 'PGint2)) where oidOf = LibPQ.Oid 1005
412−instance OidOf 'PGint4 where oidOf = LibPQ.Oid 23
413−instance OidOf ('PGfixarray ns (null 'PGint4)) where oidOf = LibPQ.Oid 1007
414−instance OidOf ('PGvararray (null 'PGint4)) where oidOf = LibPQ.Oid 1007
415−instance OidOf 'PGint8 where oidOf = LibPQ.Oid 20
416−instance OidOf ('PGfixarray ns (null 'PGint8)) where oidOf = LibPQ.Oid 1016
417−instance OidOf ('PGvararray (null 'PGint8)) where oidOf = LibPQ.Oid 1016
418−instance OidOf 'PGnumeric where oidOf = LibPQ.Oid 1700
419−instance OidOf ('PGfixarray ns (null 'PGnumeric)) where oidOf = LibPQ.Oid 1231
420−instance OidOf ('PGvararray (null 'PGnumeric)) where oidOf = LibPQ.Oid 1231
421−instance OidOf 'PGfloat4 where oidOf = LibPQ.Oid 700
422−instance OidOf ('PGfixarray ns (null 'PGfloat4)) where oidOf = LibPQ.Oid 1021
423−instance OidOf ('PGvararray (null 'PGfloat4)) where oidOf = LibPQ.Oid 1021
424−instance OidOf 'PGfloat8 where oidOf = LibPQ.Oid 701
425−instance OidOf ('PGfixarray ns (null 'PGfloat8)) where oidOf = LibPQ.Oid 1022
426−instance OidOf ('PGvararray (null 'PGfloat8)) where oidOf = LibPQ.Oid 1022
427−instance OidOf 'PGmoney where oidOf = LibPQ.Oid 790
428−instance OidOf ('PGfixarray ns (null 'PGmoney)) where oidOf = LibPQ.Oid 791
429−instance OidOf ('PGvararray (null 'PGmoney)) where oidOf = LibPQ.Oid 791
430−instance OidOf ('PGchar n) where oidOf = LibPQ.Oid 18
431−instance OidOf ('PGfixarray ns (null ('PGchar n))) where oidOf = LibPQ.Oid 1002
432−instance OidOf ('PGvararray (null ('PGchar n))) where oidOf = LibPQ.Oid 1002
433−instance OidOf ('PGvarchar n) where oidOf = LibPQ.Oid 1043
434−instance OidOf ('PGfixarray ns (null ('PGvarchar n))) where oidOf = LibPQ.Oid 1015
435−instance OidOf ('PGvararray (null ('PGvarchar n))) where oidOf = LibPQ.Oid 1015
436−instance OidOf 'PGtext where oidOf = LibPQ.Oid 25
437−instance OidOf ('PGfixarray ns (null 'PGtext)) where oidOf = LibPQ.Oid 1009
438−instance OidOf ('PGvararray (null 'PGtext)) where oidOf = LibPQ.Oid 1009
439−instance OidOf 'PGbytea where oidOf = LibPQ.Oid 17
440−instance OidOf ('PGfixarray ns (null 'PGbytea)) where oidOf = LibPQ.Oid 1001
441−instance OidOf ('PGvararray (null 'PGbytea)) where oidOf = LibPQ.Oid 1001
442−instance OidOf 'PGtimestamp where oidOf = LibPQ.Oid 1114
443−instance OidOf ('PGfixarray ns (null 'PGtimestamp)) where oidOf = LibPQ.Oid 1115
444−instance OidOf ('PGvararray (null 'PGtimestamp)) where oidOf = LibPQ.Oid 1115
445−instance OidOf 'PGtimestamptz where oidOf = LibPQ.Oid 1184
446−instance OidOf ('PGfixarray ns (null 'PGtimestamptz)) where oidOf = LibPQ.Oid 1185
447−instance OidOf ('PGvararray (null 'PGtimestamptz)) where oidOf = LibPQ.Oid 1185
448−instance OidOf 'PGdate where oidOf = LibPQ.Oid 1082
449−instance OidOf ('PGfixarray ns (null 'PGdate)) where oidOf = LibPQ.Oid 1182
450−instance OidOf ('PGvararray (null 'PGdate)) where oidOf = LibPQ.Oid 1182
451−instance OidOf 'PGtime where oidOf = LibPQ.Oid 1083
452−instance OidOf ('PGfixarray ns (null 'PGtime)) where oidOf = LibPQ.Oid 1183
453−instance OidOf ('PGvararray (null 'PGtime)) where oidOf = LibPQ.Oid 1183
454−instance OidOf 'PGtimetz where oidOf = LibPQ.Oid 1266
455−instance OidOf ('PGfixarray ns (null 'PGtimetz)) where oidOf = LibPQ.Oid 1270
456−instance OidOf ('PGvararray (null 'PGtimetz)) where oidOf = LibPQ.Oid 1270
457−instance OidOf 'PGinterval where oidOf = LibPQ.Oid 1186
458−instance OidOf ('PGfixarray ns (null 'PGinterval)) where oidOf = LibPQ.Oid 1187
459−instance OidOf ('PGvararray (null 'PGinterval)) where oidOf = LibPQ.Oid 1187
460−instance OidOf 'PGuuid where oidOf = LibPQ.Oid 2950
461−instance OidOf ('PGfixarray ns (null 'PGuuid)) where oidOf = LibPQ.Oid 2951
462−instance OidOf ('PGvararray (null 'PGuuid)) where oidOf = LibPQ.Oid 2951
463−instance OidOf 'PGinet where oidOf = LibPQ.Oid 869
464−instance OidOf ('PGfixarray ns (null 'PGinet)) where oidOf = LibPQ.Oid 1041
465−instance OidOf ('PGvararray (null 'PGinet)) where oidOf = LibPQ.Oid 1041
466−instance OidOf 'PGjson where oidOf = LibPQ.Oid 114
467−instance OidOf ('PGfixarray ns (null 'PGjson)) where oidOf = LibPQ.Oid 199
468−instance OidOf ('PGvararray (null 'PGjson)) where oidOf = LibPQ.Oid 199
469−instance OidOf 'PGjsonb where oidOf = LibPQ.Oid 3802
470−instance OidOf ('PGfixarray ns (null 'PGjsonb)) where oidOf = LibPQ.Oid 3807
471−instance OidOf ('PGvararray (null 'PGjsonb)) where oidOf = LibPQ.Oid 3807
472−instance OidOf 'PGtsvector where oidOf = LibPQ.Oid 3614
473−instance OidOf ('PGfixarray ns (null 'PGtsvector)) where oidOf = LibPQ.Oid 3643
474−instance OidOf ('PGvararray (null 'PGtsvector)) where oidOf = LibPQ.Oid 3643
475−instance OidOf 'PGtsquery where oidOf = LibPQ.Oid 3615
476−instance OidOf ('PGfixarray ns (null 'PGtsquery)) where oidOf = LibPQ.Oid 3645
477−instance OidOf ('PGvararray (null 'PGtsquery)) where oidOf = LibPQ.Oid 3645
478−instance OidOf 'PGoid where oidOf = LibPQ.Oid 26
479−instance OidOf ('PGfixarray ns (null 'PGoid)) where oidOf = LibPQ.Oid 1028
480−instance OidOf ('PGvararray (null 'PGoid)) where oidOf = LibPQ.Oid 1028
481−instance OidOf ('PGrange 'PGint4) where oidOf = LibPQ.Oid 3904
482−instance OidOf ('PGfixarray ns (null ('PGrange 'PGint4))) where oidOf = LibPQ.Oid 3905
483−instance OidOf ('PGvararray (null ('PGrange 'PGint4))) where oidOf = LibPQ.Oid 3905
484−instance OidOf ('PGrange 'PGint8) where oidOf = LibPQ.Oid 3926
485−instance OidOf ('PGfixarray ns (null ('PGrange 'PGint8))) where oidOf = LibPQ.Oid 3927
486−instance OidOf ('PGvararray (null ('PGrange 'PGint8))) where oidOf = LibPQ.Oid 3927
487−instance OidOf ('PGrange 'PGnumeric) where oidOf = LibPQ.Oid 3906
488−instance OidOf ('PGfixarray ns (null ('PGrange 'PGnumeric))) where oidOf = LibPQ.Oid 3907
489−instance OidOf ('PGvararray (null ('PGrange 'PGnumeric))) where oidOf = LibPQ.Oid 3907
490−instance OidOf ('PGrange 'PGtimestamp) where oidOf = LibPQ.Oid 3908
491−instance OidOf ('PGfixarray ns (null ('PGrange 'PGtimestamp))) where oidOf = LibPQ.Oid 3909
492−instance OidOf ('PGvararray (null ('PGrange 'PGtimestamp))) where oidOf = LibPQ.Oid 3909
493−instance OidOf ('PGrange 'PGtimestamptz) where oidOf = LibPQ.Oid 3910
494−instance OidOf ('PGfixarray ns (null ('PGrange 'PGtimestamptz))) where oidOf = LibPQ.Oid 3911
495−instance OidOf ('PGvararray (null ('PGrange 'PGtimestamptz))) where oidOf = LibPQ.Oid 3911
496−instance OidOf ('PGrange 'PGdate) where oidOf = LibPQ.Oid 3912
497−instance OidOf ('PGfixarray ns (null ('PGrange 'PGdate))) where oidOf = LibPQ.Oid 3913
498−instance OidOf ('PGvararray (null ('PGrange 'PGdate))) where oidOf = LibPQ.Oid 3913
499−instance {-# OVERLAPPABLE #-} OidOf ('PGrange ty) where oidOf = LibPQ.invalidOid
500−instance {-# OVERLAPPABLE #-} OidOf ('PGfixarray ns (null ('PGrange ty))) where oidOf = LibPQ.invalidOid
501−instance {-# OVERLAPPABLE #-} OidOf ('PGvararray (null ('PGrange ty))) where oidOf = LibPQ.invalidOid
502−instance {-# OVERLAPPABLE #-} OidOf ('PGcomposite row) where oidOf = LibPQ.invalidOid
503−instance {-# OVERLAPPABLE #-} OidOf ('PGfixarray ns (null ('PGcomposite row))) where oidOf = LibPQ.invalidOid
504−instance {-# OVERLAPPABLE #-} OidOf ('PGvararray (null ('PGcomposite row))) where oidOf = LibPQ.invalidOid
505−instance {-# OVERLAPPABLE #-} OidOf ('PGenum labels) where oidOf = LibPQ.invalidOid
506−instance {-# OVERLAPPABLE #-} OidOf ('PGfixarray ns (null ('PGenum labels))) where oidOf = LibPQ.invalidOid
507−instance {-# OVERLAPPABLE #-} OidOf ('PGvararray (null ('PGenum labels))) where oidOf = LibPQ.invalidOid
508−
509−class OidOfParam (ty :: NullityType) where oidOfParam :: Oid
510−instance OidOf ty => OidOfParam (null ty) where oidOfParam = oidOf @ty
511−
512−-- | Lifts a `OidOf` constraint to a field.
513−class OidOfField (field :: (Symbol, NullityType)) where
514− oidOfField :: Oid
515−instance OidOf ty => OidOfField (alias ::: nullity ty) where
516− oidOfField = oidOf @ty
405+class HasOid (ty :: PGType) where oidOf :: LibPQ.Oid
406+instance HasOid 'PGbool where oidOf = LibPQ.Oid 16
407+instance HasOid ('PGfixarray ns (null 'PGbool)) where oidOf = LibPQ.Oid 1000
408+instance HasOid ('PGvararray (null 'PGbool)) where oidOf = LibPQ.Oid 1000
409+instance HasOid 'PGint2 where oidOf = LibPQ.Oid 21
410+instance HasOid ('PGfixarray ns (null 'PGint2)) where oidOf = LibPQ.Oid 1005
411+instance HasOid ('PGvararray (null 'PGint2)) where oidOf = LibPQ.Oid 1005
412+instance HasOid 'PGint4 where oidOf = LibPQ.Oid 23
413+instance HasOid ('PGfixarray ns (null 'PGint4)) where oidOf = LibPQ.Oid 1007
414+instance HasOid ('PGvararray (null 'PGint4)) where oidOf = LibPQ.Oid 1007
415+instance HasOid 'PGint8 where oidOf = LibPQ.Oid 20
416+instance HasOid ('PGfixarray ns (null 'PGint8)) where oidOf = LibPQ.Oid 1016
417+instance HasOid ('PGvararray (null 'PGint8)) where oidOf = LibPQ.Oid 1016
418+instance HasOid 'PGnumeric where oidOf = LibPQ.Oid 1700
419+instance HasOid ('PGfixarray ns (null 'PGnumeric)) where oidOf = LibPQ.Oid 1231
420+instance HasOid ('PGvararray (null 'PGnumeric)) where oidOf = LibPQ.Oid 1231
421+instance HasOid 'PGfloat4 where oidOf = LibPQ.Oid 700
422+instance HasOid ('PGfixarray ns (null 'PGfloat4)) where oidOf = LibPQ.Oid 1021
423+instance HasOid ('PGvararray (null 'PGfloat4)) where oidOf = LibPQ.Oid 1021
424+instance HasOid 'PGfloat8 where oidOf = LibPQ.Oid 701
425+instance HasOid ('PGfixarray ns (null 'PGfloat8)) where oidOf = LibPQ.Oid 1022
426+instance HasOid ('PGvararray (null 'PGfloat8)) where oidOf = LibPQ.Oid 1022
427+instance HasOid 'PGmoney where oidOf = LibPQ.Oid 790
428+instance HasOid ('PGfixarray ns (null 'PGmoney)) where oidOf = LibPQ.Oid 791
429+instance HasOid ('PGvararray (null 'PGmoney)) where oidOf = LibPQ.Oid 791
430+instance HasOid ('PGchar n) where oidOf = LibPQ.Oid 18
431+instance HasOid ('PGfixarray ns (null ('PGchar n))) where oidOf = LibPQ.Oid 1002
432+instance HasOid ('PGvararray (null ('PGchar n))) where oidOf = LibPQ.Oid 1002
433+instance HasOid ('PGvarchar n) where oidOf = LibPQ.Oid 1043
434+instance HasOid ('PGfixarray ns (null ('PGvarchar n))) where oidOf = LibPQ.Oid 1015
435+instance HasOid ('PGvararray (null ('PGvarchar n))) where oidOf = LibPQ.Oid 1015
436+instance HasOid 'PGtext where oidOf = LibPQ.Oid 25
437+instance HasOid ('PGfixarray ns (null 'PGtext)) where oidOf = LibPQ.Oid 1009
438+instance HasOid ('PGvararray (null 'PGtext)) where oidOf = LibPQ.Oid 1009
439+instance HasOid 'PGbytea where oidOf = LibPQ.Oid 17
440+instance HasOid ('PGfixarray ns (null 'PGbytea)) where oidOf = LibPQ.Oid 1001
441+instance HasOid ('PGvararray (null 'PGbytea)) where oidOf = LibPQ.Oid 1001
442+instance HasOid 'PGtimestamp where oidOf = LibPQ.Oid 1114
443+instance HasOid ('PGfixarray ns (null 'PGtimestamp)) where oidOf = LibPQ.Oid 1115
444+instance HasOid ('PGvararray (null 'PGtimestamp)) where oidOf = LibPQ.Oid 1115
445+instance HasOid 'PGtimestamptz where oidOf = LibPQ.Oid 1184
446+instance HasOid ('PGfixarray ns (null 'PGtimestamptz)) where oidOf = LibPQ.Oid 1185
447+instance HasOid ('PGvararray (null 'PGtimestamptz)) where oidOf = LibPQ.Oid 1185
448+instance HasOid 'PGdate where oidOf = LibPQ.Oid 1082
449+instance HasOid ('PGfixarray ns (null 'PGdate)) where oidOf = LibPQ.Oid 1182
450+instance HasOid ('PGvararray (null 'PGdate)) where oidOf = LibPQ.Oid 1182
451+instance HasOid 'PGtime where oidOf = LibPQ.Oid 1083
452+instance HasOid ('PGfixarray ns (null 'PGtime)) where oidOf = LibPQ.Oid 1183
453+instance HasOid ('PGvararray (null 'PGtime)) where oidOf = LibPQ.Oid 1183
454+instance HasOid 'PGtimetz where oidOf = LibPQ.Oid 1266
455+instance HasOid ('PGfixarray ns (null 'PGtimetz)) where oidOf = LibPQ.Oid 1270
456+instance HasOid ('PGvararray (null 'PGtimetz)) where oidOf = LibPQ.Oid 1270
457+instance HasOid 'PGinterval where oidOf = LibPQ.Oid 1186
458+instance HasOid ('PGfixarray ns (null 'PGinterval)) where oidOf = LibPQ.Oid 1187
459+instance HasOid ('PGvararray (null 'PGinterval)) where oidOf = LibPQ.Oid 1187
460+instance HasOid 'PGuuid where oidOf = LibPQ.Oid 2950
461+instance HasOid ('PGfixarray ns (null 'PGuuid)) where oidOf = LibPQ.Oid 2951
462+instance HasOid ('PGvararray (null 'PGuuid)) where oidOf = LibPQ.Oid 2951
463+instance HasOid 'PGinet where oidOf = LibPQ.Oid 869
464+instance HasOid ('PGfixarray ns (null 'PGinet)) where oidOf = LibPQ.Oid 1041
465+instance HasOid ('PGvararray (null 'PGinet)) where oidOf = LibPQ.Oid 1041
466+instance HasOid 'PGjson where oidOf = LibPQ.Oid 114
467+instance HasOid ('PGfixarray ns (null 'PGjson)) where oidOf = LibPQ.Oid 199
468+instance HasOid ('PGvararray (null 'PGjson)) where oidOf = LibPQ.Oid 199
469+instance HasOid 'PGjsonb where oidOf = LibPQ.Oid 3802
470+instance HasOid ('PGfixarray ns (null 'PGjsonb)) where oidOf = LibPQ.Oid 3807
471+instance HasOid ('PGvararray (null 'PGjsonb)) where oidOf = LibPQ.Oid 3807
472+instance HasOid 'PGtsvector where oidOf = LibPQ.Oid 3614
473+instance HasOid ('PGfixarray ns (null 'PGtsvector)) where oidOf = LibPQ.Oid 3643
474+instance HasOid ('PGvararray (null 'PGtsvector)) where oidOf = LibPQ.Oid 3643
475+instance HasOid 'PGtsquery where oidOf = LibPQ.Oid 3615
476+instance HasOid ('PGfixarray ns (null 'PGtsquery)) where oidOf = LibPQ.Oid 3645
477+instance HasOid ('PGvararray (null 'PGtsquery)) where oidOf = LibPQ.Oid 3645
478+instance HasOid 'PGoid where oidOf = LibPQ.Oid 26
479+instance HasOid ('PGfixarray ns (null 'PGoid)) where oidOf = LibPQ.Oid 1028
480+instance HasOid ('PGvararray (null 'PGoid)) where oidOf = LibPQ.Oid 1028
481+instance HasOid ('PGrange 'PGint4) where oidOf = LibPQ.Oid 3904
482+instance HasOid ('PGfixarray ns (null ('PGrange 'PGint4))) where oidOf = LibPQ.Oid 3905
483+instance HasOid ('PGvararray (null ('PGrange 'PGint4))) where oidOf = LibPQ.Oid 3905
484+instance HasOid ('PGrange 'PGint8) where oidOf = LibPQ.Oid 3926
485+instance HasOid ('PGfixarray ns (null ('PGrange 'PGint8))) where oidOf = LibPQ.Oid 3927
486+instance HasOid ('PGvararray (null ('PGrange 'PGint8))) where oidOf = LibPQ.Oid 3927
487+instance HasOid ('PGrange 'PGnumeric) where oidOf = LibPQ.Oid 3906
488+instance HasOid ('PGfixarray ns (null ('PGrange 'PGnumeric))) where oidOf = LibPQ.Oid 3907
489+instance HasOid ('PGvararray (null ('PGrange 'PGnumeric))) where oidOf = LibPQ.Oid 3907
490+instance HasOid ('PGrange 'PGtimestamp) where oidOf = LibPQ.Oid 3908
491+instance HasOid ('PGfixarray ns (null ('PGrange 'PGtimestamp))) where oidOf = LibPQ.Oid 3909
492+instance HasOid ('PGvararray (null ('PGrange 'PGtimestamp))) where oidOf = LibPQ.Oid 3909
493+instance HasOid ('PGrange 'PGtimestamptz) where oidOf = LibPQ.Oid 3910
494+instance HasOid ('PGfixarray ns (null ('PGrange 'PGtimestamptz))) where oidOf = LibPQ.Oid 3911
495+instance HasOid ('PGvararray (null ('PGrange 'PGtimestamptz))) where oidOf = LibPQ.Oid 3911
496+instance HasOid ('PGrange 'PGdate) where oidOf = LibPQ.Oid 3912
497+instance HasOid ('PGfixarray ns (null ('PGrange 'PGdate))) where oidOf = LibPQ.Oid 3913
498+instance HasOid ('PGvararray (null ('PGrange 'PGdate))) where oidOf = LibPQ.Oid 3913
499+instance {-# OVERLAPPABLE #-} HasOid ('PGrange ty) where oidOf = LibPQ.invalidOid
500+instance {-# OVERLAPPABLE #-} HasOid ('PGfixarray ns (null ('PGrange ty))) where oidOf = LibPQ.invalidOid
501+instance {-# OVERLAPPABLE #-} HasOid ('PGvararray (null ('PGrange ty))) where oidOf = LibPQ.invalidOid
502+instance {-# OVERLAPPABLE #-} HasOid ('PGcomposite row) where oidOf = LibPQ.invalidOid
503+instance {-# OVERLAPPABLE #-} HasOid ('PGfixarray ns (null ('PGcomposite row))) where oidOf = LibPQ.invalidOid
504+instance {-# OVERLAPPABLE #-} HasOid ('PGvararray (null ('PGcomposite row))) where oidOf = LibPQ.invalidOid
505+instance {-# OVERLAPPABLE #-} HasOid ('PGenum labels) where oidOf = LibPQ.invalidOid
506+instance {-# OVERLAPPABLE #-} HasOid ('PGfixarray ns (null ('PGenum labels))) where oidOf = LibPQ.invalidOid
507+instance {-# OVERLAPPABLE #-} HasOid ('PGvararray (null ('PGenum labels))) where oidOf = LibPQ.invalidOid
508+
509+class HasOidParam (ty :: NullityType) where oidOfParam :: Oid
510+instance HasOid ty => HasOidParam (null ty) where oidOfParam = oidOf @ty
511+
512+-- | Lifts a `HasOid` constraint to a field.
513+class HasAliasedOid (field :: (Symbol, NullityType)) where
514+ aliasedOid :: Oid
515+instance HasOid ty => HasAliasedOid (alias ::: nullity ty) where
516+ aliasedOid = oidOf @ty
517517
518518-- | A `ToNullityParam` constraint gives an encoding of a Haskell `Type` into
519519-- into the binary format of a PostgreSQL `NullityType`.