on dev help sign in
naming
commita244b72d2d325523043ba415f349c50fffa208f8 authorEitan Chatav <eitan@EEM109LMBP-1.local> dateWed 23 Oct 2019, 10:58 (7 years ago) parent9ff632c
3 files changed+142−142
squeal-postgresql/src/Squeal/PostgreSQL/Binary.hs+124−124 squeal-postgresql/src/Squeal/PostgreSQL/PQ.hs+16−16 squeal-postgresql/test/Property.hs+2−2
squeal-postgresql/src/Squeal/PostgreSQL/Binary.hs+124−124
@@ -216,9 +216,9 @@ module Squeal.PostgreSQL.Binary
216216 -- * Only
217217 , Only (..)
218218 -- * Oid
219− , HasOid (..)
220− , HasOidParam (..)
221− , HasAliasedOid (..)
219+ , OidOf (..)
220+ , OidOfParam (..)
221+ , OidOfField (..)
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, HasOid pg)
315+instance (ToNullityParam x ty, ty ~ nullity pg, OidOf 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, HasOid pg)
321+instance (ToParam x pg, OidOf 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, HasOid pg)
326+instance (ToParam x pg, OidOf 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, HasOid pg)
332+instance (ToFixArray x dims ty, ty ~ nullity pg, OidOf 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 HasAliasedOid fields
359+ , All OidOfField 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 HasAliasedOid row
367+ :: All OidOfField 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− :: HasAliasedOid field
384+ :: OidOfField field
385385 => K (Maybe Encoding.Encoding) field
386386 -> Encoding.Encoding
387387 each (K field :: K (Maybe Encoding.Encoding) field) =
388− word32BE (getOid (aliasedOid @field))
388+ word32BE (getOid (oidOfField @field))
389389 <> case field of
390390 Nothing -> int64BE (-1)
391391 Just value ->
392392 int32BE (fromIntegral (builderLength value))
393393 <> value
394394 in
395− hcfoldMap (Proxy @HasAliasedOid) each fields
395+ hcfoldMap (Proxy @OidOfField) 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 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
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
517517
518518-- | A `ToNullityParam` constraint gives an encoding of a Haskell `Type` into
519519-- into the binary format of a PostgreSQL `NullityType`.
squeal-postgresql/src/Squeal/PostgreSQL/PQ.hs+16−16
@@ -317,13 +317,13 @@ a default instance.
317317-}
318318class Monad pq => MonadPQ schemas pq | pq -> schemas where
319319 manipulateParams
320− :: (ToParams x params, All HasOidParam params)
320+ :: (ToParams x params, All OidOfParam params)
321321 => Manipulation '[] schemas params ys
322322 -- ^ `insertInto`, `update` or `deleteFrom`
323323 -> x -> pq (K LibPQ.Result ys)
324324 default manipulateParams
325325 :: (MonadTrans t, MonadPQ schemas pq1, pq ~ t pq1)
326− => (ToParams x params, All HasOidParam params)
326+ => (ToParams x params, All OidOfParam params)
327327 => Manipulation '[] schemas params ys
328328 -- ^ `insertInto`, `update` or `deleteFrom`
329329 -> x -> pq (K LibPQ.Result ys)
@@ -331,7 +331,7 @@ class Monad pq => MonadPQ schemas pq | pq -> schemas where
331331 manipulateParams manipulation params
332332
333333 manipulateParams_
334− :: (ToParams x params, All HasOidParam params)
334+ :: (ToParams x params, All OidOfParam params)
335335 => Manipulation '[] schemas params '[]
336336 -- ^ `insertInto`, `update` or `deleteFrom`
337337 -> x -> pq ()
@@ -344,7 +344,7 @@ class Monad pq => MonadPQ schemas pq | pq -> schemas where
344344 manipulate_ = void . manipulate
345345
346346 runQueryParams
347− :: (ToParams x params, All HasOidParam params)
347+ :: (ToParams x params, All OidOfParam params)
348348 => Query '[] '[] schemas params ys
349349 -- ^ `select` and friends
350350 -> x -> pq (K LibPQ.Result ys)
@@ -357,19 +357,19 @@ class Monad pq => MonadPQ schemas pq | pq -> schemas where
357357 runQuery q = runQueryParams q ()
358358
359359 traversePrepared
360− :: (ToParams x params, Traversable list, All HasOidParam params)
360+ :: (ToParams x params, Traversable list, All OidOfParam params)
361361 => Manipulation '[] schemas params ys
362362 -- ^ `insertInto`, `update`, or `deleteFrom`, and friends
363363 -> list x -> pq (list (K LibPQ.Result ys))
364364 default traversePrepared
365365 :: (MonadTrans t, MonadPQ schemas pq1, pq ~ t pq1)
366− => (ToParams x params, Traversable list, All HasOidParam params)
366+ => (ToParams x params, Traversable list, All OidOfParam params)
367367 => Manipulation '[] schemas params ys -> list x -> pq (list (K LibPQ.Result ys))
368368 traversePrepared manipulation params = lift $
369369 traversePrepared manipulation params
370370
371371 forPrepared
372− :: (ToParams x params, Traversable list, All HasOidParam params)
372+ :: (ToParams x params, Traversable list, All OidOfParam params)
373373 => list x
374374 -> Manipulation '[] schemas params ys
375375 -- ^ `insertInto`, `update` or `deleteFrom`
@@ -377,13 +377,13 @@ class Monad pq => MonadPQ schemas pq | pq -> schemas where
377377 forPrepared = flip traversePrepared
378378
379379 traversePrepared_
380− :: (ToParams x params, Foldable list, All HasOidParam params)
380+ :: (ToParams x params, Foldable list, All OidOfParam params)
381381 => Manipulation '[] schemas params '[]
382382 -- ^ `insertInto`, `update` or `deleteFrom`
383383 -> list x -> pq ()
384384 default traversePrepared_
385385 :: (MonadTrans t, MonadPQ schemas pq1, pq ~ t pq1)
386− => (ToParams x params, Foldable list, All HasOidParam params)
386+ => (ToParams x params, Foldable list, All OidOfParam params)
387387 => Manipulation '[] schemas params '[]
388388 -- ^ `insertInto`, `update` or `deleteFrom`
389389 -> list x -> pq ()
@@ -391,7 +391,7 @@ class Monad pq => MonadPQ schemas pq | pq -> schemas where
391391 traversePrepared_ manipulation params
392392
393393 forPrepared_
394− :: (ToParams x params, Foldable list, All HasOidParam params)
394+ :: (ToParams x params, Foldable list, All OidOfParam params)
395395 => list x
396396 -> Manipulation '[] schemas params '[]
397397 -- ^ `insertInto`, `update` or `deleteFrom`
@@ -412,7 +412,7 @@ instance (MonadIO io, schemas0 ~ schemas, schemas1 ~ schemas)
412412 PQ $ \ (K conn) -> do
413413 let
414414 paramSet
415− :: forall param. HasOidParam param
415+ :: forall param. OidOfParam param
416416 => K (Maybe Encoding.Encoding) param
417417 -> K (Maybe (LibPQ.Oid, ByteString, LibPQ.Format)) param
418418 paramSet (K maybeEncoding) = K $
@@ -420,7 +420,7 @@ instance (MonadIO io, schemas0 ~ schemas, schemas1 ~ schemas)
420420 (oidOfParam @param, encodingBytes encoding, LibPQ.Binary)
421421 params'
422422 = hcollapse
423− . hcmap (Proxy @HasOidParam) paramSet
423+ . hcmap (Proxy @OidOfParam) paramSet
424424 $ toParams @x @ps params
425425 q' = q <> ";"
426426 resultMaybe <- liftIO $ LibPQ.execParams conn q' params' LibPQ.Binary
@@ -436,10 +436,10 @@ instance (MonadIO io, schemas0 ~ schemas, schemas1 ~ schemas)
436436 PQ $ \ (K conn) -> liftIO $ do
437437 let
438438 temp = "temporary_statement"
439− paramOid :: forall p. HasOidParam p => K LibPQ.Oid p
439+ paramOid :: forall p. OidOfParam p => K LibPQ.Oid p
440440 paramOid = K (oidOfParam @p)
441441 paramOids :: NP (K LibPQ.Oid) xs
442− paramOids = hcpure (Proxy @HasOidParam) paramOid
442+ paramOids = hcpure (Proxy @OidOfParam) paramOid
443443 paramOids' :: [LibPQ.Oid]
444444 paramOids' = hcollapse paramOids
445445 prepResultMaybe <- LibPQ.prepare conn temp q (Just paramOids')
@@ -470,10 +470,10 @@ instance (MonadIO io, schemas0 ~ schemas, schemas1 ~ schemas)
470470 PQ $ \ (K conn) -> liftIO $ do
471471 let
472472 temp = "temporary_statement"
473− paramOid :: forall p. HasOidParam p => K LibPQ.Oid p
473+ paramOid :: forall p. OidOfParam p => K LibPQ.Oid p
474474 paramOid = K (oidOfParam @p)
475475 paramOids :: NP (K LibPQ.Oid) xs
476− paramOids = hcpure (Proxy @HasOidParam) paramOid
476+ paramOids = hcpure (Proxy @OidOfParam) paramOid
477477 paramOids' :: [LibPQ.Oid]
478478 paramOids' = hcollapse paramOids
479479 prepResultMaybe <- LibPQ.prepare conn temp q (Just paramOids')
squeal-postgresql/test/Property.hs+2−2
@@ -92,14 +92,14 @@ roundtrips = Group "roundtrips"
9292 -- genTimeWithZone = (,) <$> genTimeOfDay <*> genTimeZone
9393
9494roundtrip
95− :: (HasOid ty, ToParam x ty, FromValue ty x, Show x, Eq x)
95+ :: (OidOf ty, ToParam x ty, FromValue ty x, Show x, Eq x)
9696 => TypeExpression schemas ('NotNull ty)
9797 -> Gen x
9898 -> (PropertyName, Property)
9999roundtrip = roundtripOn id
100100
101101roundtripOn
102− :: (HasOid ty, ToParam x ty, FromValue ty x, Show x, Eq x)
102+ :: (OidOf ty, ToParam x ty, FromValue ty x, Show x, Eq x)
103103 => (x -> x)
104104 -> TypeExpression schemas ('NotNull ty)
105105 -> Gen x