@ -1726,10 +1726,11 @@ get_collation_actual_version(char collprovider, const char *collcollate)
/*
/*
* Get provider - specific collation version string for a given collation OID .
* Get provider - specific collation version string for a given collation OID .
* Return NULL if the provider doesn ' t support versions , or the collation is
* Return NULL if the provider doesn ' t support versions , or the collation is
* unversioned ( for example " C " ) .
* unversioned ( for example " C " ) . Unknown OIDs result in NULL if missing_ok is
* true .
*/
*/
char *
char *
get_collation_version_for_oid ( Oid oid )
get_collation_version_for_oid ( Oid oid , bool missing_ok )
{
{
HeapTuple tp ;
HeapTuple tp ;
char * version ;
char * version ;
@ -1751,7 +1752,11 @@ get_collation_version_for_oid(Oid oid)
tp = SearchSysCache1 ( COLLOID , ObjectIdGetDatum ( oid ) ) ;
tp = SearchSysCache1 ( COLLOID , ObjectIdGetDatum ( oid ) ) ;
if ( ! HeapTupleIsValid ( tp ) )
if ( ! HeapTupleIsValid ( tp ) )
{
if ( missing_ok )
return NULL ;
elog ( ERROR , " cache lookup failed for collation %u " , oid ) ;
elog ( ERROR , " cache lookup failed for collation %u " , oid ) ;
}
collform = ( Form_pg_collation ) GETSTRUCT ( tp ) ;
collform = ( Form_pg_collation ) GETSTRUCT ( tp ) ;
version = get_collation_actual_version ( collform - > collprovider ,
version = get_collation_actual_version ( collform - > collprovider ,
NameStr ( collform - > collcollate ) ) ;
NameStr ( collform - > collcollate ) ) ;