@@ -3258,6 +3258,38 @@ static Oid mmGTOid = InvalidOid;
3258
3258
static Oid mcharOid = InvalidOid ;
3259
3259
static Oid mvarcharOid = InvalidOid ;
3260
3260
3261
+ static Oid
3262
+ findTypeOid (char * typname )
3263
+ {
3264
+ CatCList * catlist ;
3265
+ HeapTuple tup ;
3266
+ int n_members ;
3267
+ Oid typoid ;
3268
+
3269
+ catlist = SearchSysCacheList (TYPENAMENSP , 1 ,
3270
+ CStringGetDatum (typname ),
3271
+ 0 , 0 , 0 );
3272
+
3273
+ n_members = catlist -> n_members ;
3274
+
3275
+ if (n_members != 1 )
3276
+ {
3277
+ ReleaseSysCacheList (catlist );
3278
+ if (n_members > 1 )
3279
+ elog (ERROR ,"There are %d candidates for '%s' type" ,
3280
+ n_members , typname );
3281
+ return InvalidOid ;
3282
+ }
3283
+
3284
+ tup = & catlist -> members [0 ]-> tuple ;
3285
+
3286
+ typoid = HeapTupleGetOid (tup );
3287
+
3288
+ ReleaseSysCacheList (catlist );
3289
+
3290
+ return typoid ;
3291
+ }
3292
+
3261
3293
static bool
3262
3294
fillMCharOIDS () {
3263
3295
CatCList * catlist ;
@@ -3280,27 +3312,13 @@ fillMCharOIDS() {
3280
3312
tup = & catlist -> members [0 ]-> tuple ;
3281
3313
3282
3314
if ( HeapTupleGetOid (tup ) != mmPFPOid ) {
3283
- TypeName * typename ;
3284
- Type typtup ;
3285
3315
char * quals_funcname = "mchar_greaterstring" ;
3286
3316
Oid tmp_mmPFPOid = HeapTupleGetOid (tup );
3287
3317
3288
3318
ReleaseSysCacheList (catlist );
3289
3319
3290
- typename = makeTypeName ("mchar" );
3291
- typtup = LookupTypeName (NULL , typename , NULL , true);
3292
- if ( typtup ) {
3293
- mcharOid = typeTypeId (typtup );
3294
- ReleaseSysCache (typtup );
3295
- }
3296
-
3297
- typename = makeTypeName ("mvarchar" );
3298
- typtup = LookupTypeName (NULL , typename , NULL , true);
3299
- if ( typtup ) {
3300
- mvarcharOid = typeTypeId (typtup );
3301
- ReleaseSysCache (typtup );
3302
- }
3303
-
3320
+ mcharOid = findTypeOid ("mchar" );
3321
+ mvarcharOid = findTypeOid ("mvarchar" );
3304
3322
3305
3323
if ( mcharOid == InvalidOid || mvarcharOid == InvalidOid ) {
3306
3324
elog (LOG ,"Can't find mchar/mvarvarchar types: mchar=%d mvarchar=%d" ,
0 commit comments