@@ -54,6 +54,7 @@ get_control_data(ClusterInfo *cluster, bool live_check)
5454bool got_ident = false;
5555bool got_index = false;
5656bool got_toast = false;
57+ bool got_large_object = false;
5758bool got_date_is_int = false;
5859bool got_float8_pass_by_value = false;
5960bool got_data_checksum_version = false;
@@ -357,6 +358,17 @@ get_control_data(ClusterInfo *cluster, bool live_check)
357358cluster -> controldata .toast = str2uint (p );
358359got_toast = true;
359360}
361+ else if ((p = strstr (bufin ,"Size of a large-object chunk:" ))!= NULL )
362+ {
363+ p = strchr (p ,':' );
364+
365+ if (p == NULL || strlen (p ) <=1 )
366+ pg_fatal ("%d: controldata retrieval problem\n" ,__LINE__ );
367+
368+ p ++ ;/* removing ':' char */
369+ cluster -> controldata .large_object = str2uint (p );
370+ got_large_object = true;
371+ }
360372else if ((p = strstr (bufin ,"Date/time type storage:" ))!= NULL )
361373{
362374p = strchr (p ,':' );
@@ -475,6 +487,8 @@ get_control_data(ClusterInfo *cluster, bool live_check)
475487!got_tli ||
476488!got_align || !got_blocksz || !got_largesz || !got_walsz ||
477489!got_walseg || !got_ident || !got_index || !got_toast ||
490+ (!got_large_object &&
491+ cluster -> controldata .cat_ver >=LARGE_OBJECT_SIZE_PG_CONTROL_VER )||
478492!got_date_is_int || !got_float8_pass_by_value || !got_data_checksum_version )
479493{
480494pg_log (PG_REPORT ,
@@ -527,6 +541,10 @@ get_control_data(ClusterInfo *cluster, bool live_check)
527541if (!got_toast )
528542pg_log (PG_REPORT ," maximum TOAST chunk size\n" );
529543
544+ if (!got_large_object &&
545+ cluster -> controldata .cat_ver >=LARGE_OBJECT_SIZE_PG_CONTROL_VER )
546+ pg_log (PG_REPORT ," large-object chunk size\n" );
547+
530548if (!got_date_is_int )
531549pg_log (PG_REPORT ," dates/times are integers?\n" );
532550
@@ -576,6 +594,9 @@ check_control_data(ControlData *oldctrl,
576594if (oldctrl -> toast == 0 || oldctrl -> toast != newctrl -> toast )
577595pg_fatal ("old and new pg_controldata maximum TOAST chunk sizes are invalid or do not match\n" );
578596
597+ if (oldctrl -> large_object == 0 || oldctrl -> large_object != newctrl -> large_object )
598+ pg_fatal ("old and new pg_controldata large-object chunk sizes are invalid or do not match\n" );
599+
579600if (oldctrl -> date_is_int != newctrl -> date_is_int )
580601pg_fatal ("old and new pg_controldata date/time storage types do not match\n" );
581602