@@ -3277,6 +3277,38 @@ static Oid mmGTOid = InvalidOid;
3277
3277
static Oid mcharOid = InvalidOid ;
3278
3278
static Oid mvarcharOid = InvalidOid ;
3279
3279
3280
+ static Oid
3281
+ findTypeOid (char * typname )
3282
+ {
3283
+ CatCList * catlist ;
3284
+ HeapTuple tup ;
3285
+ int n_members ;
3286
+ Oid typoid ;
3287
+
3288
+ catlist = SearchSysCacheList (TYPENAMENSP , 1 ,
3289
+ CStringGetDatum (typname ),
3290
+ 0 , 0 , 0 );
3291
+
3292
+ n_members = catlist -> n_members ;
3293
+
3294
+ if (n_members != 1 )
3295
+ {
3296
+ ReleaseSysCacheList (catlist );
3297
+ if (n_members > 1 )
3298
+ elog (ERROR ,"There are %d candidates for '%s' type" ,
3299
+ n_members , typname );
3300
+ return InvalidOid ;
3301
+ }
3302
+
3303
+ tup = & catlist -> members [0 ]-> tuple ;
3304
+
3305
+ typoid = HeapTupleGetOid (tup );
3306
+
3307
+ ReleaseSysCacheList (catlist );
3308
+
3309
+ return typoid ;
3310
+ }
3311
+
3280
3312
static bool
3281
3313
fillMCharOIDS () {
3282
3314
CatCList * catlist ;
@@ -3299,27 +3331,13 @@ fillMCharOIDS() {
3299
3331
tup = & catlist -> members [0 ]-> tuple ;
3300
3332
3301
3333
if ( HeapTupleGetOid (tup ) != mmPFPOid ) {
3302
- TypeName * typename ;
3303
- Type typtup ;
3304
3334
char * quals_funcname = "mchar_greaterstring" ;
3305
3335
Oid tmp_mmPFPOid = HeapTupleGetOid (tup );
3306
3336
3307
3337
ReleaseSysCacheList (catlist );
3308
3338
3309
- typename = makeTypeName ("mchar" );
3310
- typtup = LookupTypeName (NULL , typename , NULL , true);
3311
- if ( typtup ) {
3312
- mcharOid = typeTypeId (typtup );
3313
- ReleaseSysCache (typtup );
3314
- }
3315
-
3316
- typename = makeTypeName ("mvarchar" );
3317
- typtup = LookupTypeName (NULL , typename , NULL , true);
3318
- if ( typtup ) {
3319
- mvarcharOid = typeTypeId (typtup );
3320
- ReleaseSysCache (typtup );
3321
- }
3322
-
3339
+ mcharOid = findTypeOid ("mchar" );
3340
+ mvarcharOid = findTypeOid ("mvarchar" );
3323
3341
3324
3342
if ( mcharOid == InvalidOid || mvarcharOid == InvalidOid ) {
3325
3343
elog (LOG ,"Can't find mchar/mvarvarchar types: mchar=%d mvarchar=%d" ,
0 commit comments