@@ -221,24 +221,27 @@ function Postgres(a, b) {
221
221
return arrayTypesPromise || ( arrayTypesPromise =
222
222
new Promise ( ( resolve , reject ) => {
223
223
send ( connection , { resolve, reject, raw : true } , `
224
- select oid, typelem
225
- from pg_catalog.pg_type
226
- where typcategory = 'A'
224
+ select b.oid, b.typarray
225
+ from pg_catalog.pg_type a
226
+ left join pg_catalog.pg_type b on b.oid = a.typelem
227
+ where a.typcategory = 'A' and b.typcategory != 'C'
228
+ group by b.oid, b.typarray
229
+ order by b.oid
227
230
` )
228
231
} ) . then ( types => {
229
- types . forEach ( ( { oid, typelem } ) => addArrayType ( oid , typelem ) )
232
+ types . forEach ( ( { oid, typarray } ) => addArrayType ( oid , typarray ) )
230
233
ready = true
231
234
} )
232
235
)
233
236
}
234
237
235
- function addArrayType ( oid , typelem ) {
236
- const parser = options . parsers [ typelem ]
238
+ function addArrayType ( oid , typarray ) {
239
+ const parser = options . parsers [ oid ]
237
240
238
- typeArrayMap [ typelem ] = oid
239
- options . parsers [ oid ] = ( xs ) => arrayParser ( xs , parser )
240
- options . parsers [ oid ] . array = true
241
- options . serializers [ oid ] = ( xs ) => arraySerializer ( xs , options . serializers [ typelem ] )
241
+ typeArrayMap [ oid ] = typarray
242
+ options . parsers [ typarray ] = ( xs ) => arrayParser ( xs , parser )
243
+ options . parsers [ typarray ] . array = true
244
+ options . serializers [ typarray ] = ( xs ) => arraySerializer ( xs , options . serializers [ oid ] )
242
245
}
243
246
244
247
function addTypes ( sql , connection ) {
0 commit comments