@ -25,6 +25,9 @@ static void check_for_isn_and_int8_passing_mismatch(ClusterInfo *cluster);
static void check_for_tables_with_oids ( ClusterInfo * cluster ) ;
static void check_for_composite_data_type_usage ( ClusterInfo * cluster ) ;
static void check_for_reg_data_type_usage ( ClusterInfo * cluster ) ;
static void check_for_removed_data_type_usage ( ClusterInfo * cluster ,
const char * version ,
const char * datatype ) ;
static void check_for_jsonb_9_4_usage ( ClusterInfo * cluster ) ;
static void check_for_pg_role_prefix ( ClusterInfo * cluster ) ;
static void check_for_new_tablespace_dir ( ClusterInfo * new_cluster ) ;
@ -103,6 +106,16 @@ check_and_dump_old_cluster(bool live_check)
check_for_reg_data_type_usage ( & old_cluster ) ;
check_for_isn_and_int8_passing_mismatch ( & old_cluster ) ;
/*
* PG 12 removed types abstime , reltime , tinterval .
*/
if ( GET_MAJOR_VERSION ( old_cluster . major_version ) < = 1100 )
{
check_for_removed_data_type_usage ( & old_cluster , " 12 " , " abstime " ) ;
check_for_removed_data_type_usage ( & old_cluster , " 12 " , " reltime " ) ;
check_for_removed_data_type_usage ( & old_cluster , " 12 " , " tinterval " ) ;
}
/*
* Pre - PG 12 allowed tables to be declared WITH OIDS , which is not
* supported anymore . Verify there are none , iff applicable .
@ -1120,6 +1133,40 @@ check_for_reg_data_type_usage(ClusterInfo *cluster)
check_ok ( ) ;
}
/*
* check_for_removed_data_type_usage
*
* Check for in - core data types that have been removed . Callers know
* the exact list .
*/
static void
check_for_removed_data_type_usage ( ClusterInfo * cluster , const char * version ,
const char * datatype )
{
char output_path [ MAXPGPATH ] ;
char typename [ NAMEDATALEN ] ;
prep_status ( " Checking for removed \" %s \" data type in user tables " ,
datatype ) ;
snprintf ( output_path , sizeof ( output_path ) , " tables_using_%s.txt " ,
datatype ) ;
snprintf ( typename , sizeof ( typename ) , " pg_catalog.%s " , datatype ) ;
if ( check_for_data_type_usage ( cluster , typename , output_path ) )
{
pg_log ( PG_REPORT , " fatal " ) ;
pg_fatal ( " Your installation contains the \" %s \" data type in user tables. \n "
" The \" %s \" type has been removed in PostgreSQL version %s, \n "
" so this cluster cannot currently be upgraded. You can drop the \n "
" problem columns, or change them to another data type, and restart \n "
" the upgrade. A list of the problem columns is in the file: \n "
" %s \n \n " , datatype , datatype , version , output_path ) ;
}
else
check_ok ( ) ;
}
/*
* check_for_jsonb_9_4_usage ( )