newcon->consttype = baseTypeId;
newcon->consttypmod = inputTypeMod;
- newcon->constcollid = get_typcollation(newcon->consttype);
+ newcon->constcollid = typeTypeCollation(targetType);
newcon->constlen = typeLen(targetType);
newcon->constbyval = typeByVal(targetType);
newcon->constisnull = con->constisnull;
return typ->typlen;
}
-/* given type (as type struct), return the value of its 'byval' attribute.*/
+/* given type (as type struct), return its 'byval' attribute */
bool
typeByVal(Type t)
{
return typ->typbyval;
}
-/* given type (as type struct), return the name of type */
+/* given type (as type struct), return the type's name */
char *
typeTypeName(Type t)
{
return pstrdup(NameStr(typ->typname));
}
+/* given type (as type struct), return its 'typrelid' attribute */
Oid
typeTypeRelid(Type typ)
{
Form_pg_type typtup;
typtup = (Form_pg_type) GETSTRUCT(typ);
-
return typtup->typrelid;
}
+/* given type (as type struct), return its 'typcollation' attribute */
+Oid
+typeTypeCollation(Type typ)
+{
+ Form_pg_type typtup;
+
+ typtup = (Form_pg_type) GETSTRUCT(typ);
+ return typtup->typcollation;
+}
+
/*
* Given a type structure and a string, returns the internal representation
* of that string. The "string" can be NULL to perform conversion of a NULL
extern bool typeByVal(Type t);
extern char *typeTypeName(Type t);
extern Oid typeTypeRelid(Type typ);
+extern Oid typeTypeCollation(Type typ);
extern Datum stringTypeDatum(Type tp, char *string, int32 atttypmod);
extern Oid typeidTypeRelid(Oid type_id);