@@ -67,12 +67,24 @@ getTypeInfo' conn oid oidmap =
67 [(typoid, typcategory_, typdelim_, typname, typelem_)] -> do
67 [(typoid, typcategory_, typdelim_, typname, typelem_)] -> do
68 let !typcategory = B8.index typcategory_ 0
68 let !typcategory = B8.index typcategory_ 0
69 !typdelim = B8.index typdelim_ 0
69 !typdelim = B8.index typdelim_ 0
70− if typcategory == 'A'
70+ case typcategory of
72 (oidmap', typelem) <- getTypeInfo' conn typelem_ oidmap
72 (oidmap', typelem) <- getTypeInfo' conn typelem_ oidmap
73 let !typeInfo = Array{..}
73 let !typeInfo = Array{..}
74 return (oidmap', typeInfo)
74 return (oidmap', typeInfo)
76+ rngsubtypeOids <- query conn "SELECT rngsubtype\
78+ \ WHERE rngtypid = ?"
80+ case rngsubtypeOids of
81+ [Only rngsubtype_] -> do
82+ (oidmap', rngsubtype) <-
83+ getTypeInfo' conn rngsubtype_ oidmap
84+ let !typeInfo = Range{..}
85+ return (oidmap', typeInfo)
86+ _ -> fail "range subtype query failed to return exactly one result"
76 let !typeInfo = Basic{..}
88 let !typeInfo = Basic{..}
77 return (oidmap, typeInfo)
89 return (oidmap, typeInfo)
78 _ -> fail "typename query returned more than one result"
90 _ -> fail "typename query returned more than one result"