SET allow_in_place_tablespaces = true;
 CREATE TABLESPACE regress_test_stats_tblspc LOCATION '';
 SELECT sum(reads) AS stats_bulkreads_before
-  FROM pg_stat_io WHERE io_context = 'bulkread' \gset
+  FROM pg_stat_io WHERE context = 'bulkread' \gset
 ALTER TABLE heaptest SET TABLESPACE regress_test_stats_tblspc;
 -- Check that valid options are not rejected nor corruption reported
 -- for a non-empty table
 (1 row)
 
 SELECT sum(reads) AS stats_bulkreads_after
-  FROM pg_stat_io WHERE io_context = 'bulkread' \gset
+  FROM pg_stat_io WHERE context = 'bulkread' \gset
 SELECT :stats_bulkreads_after > :stats_bulkreads_before;
  ?column? 
 ----------
 
 SET allow_in_place_tablespaces = true;
 CREATE TABLESPACE regress_test_stats_tblspc LOCATION '';
 SELECT sum(reads) AS stats_bulkreads_before
-  FROM pg_stat_io WHERE io_context = 'bulkread' \gset
+  FROM pg_stat_io WHERE context = 'bulkread' \gset
 ALTER TABLE heaptest SET TABLESPACE regress_test_stats_tblspc;
 
 -- Check that valid options are not rejected nor corruption reported
 -- causing an additional bulkread, which should be reflected in pg_stat_io.
 SELECT pg_stat_force_next_flush();
 SELECT sum(reads) AS stats_bulkreads_after
-  FROM pg_stat_io WHERE io_context = 'bulkread' \gset
+  FROM pg_stat_io WHERE context = 'bulkread' \gset
 SELECT :stats_bulkreads_after > :stats_bulkreads_before;
 
 CREATE ROLE regress_heaptest_role;
 
      <row>
       <entry role="catalog_table_entry">
        <para role="column_definition">
-        <structfield>io_object</structfield> <type>text</type>
+        <structfield>object</structfield> <type>text</type>
        </para>
        <para>
         Target object of an I/O operation. Possible values are:
      <row>
       <entry role="catalog_table_entry">
        <para role="column_definition">
-        <structfield>io_context</structfield> <type>text</type>
+        <structfield>context</structfield> <type>text</type>
        </para>
        <para>
         The context of an I/O operation. Possible values are:
         <listitem>
          <para>
           <literal>normal</literal>: The default or standard
-          <varname>io_context</varname> for a type of I/O operation. For
+          <varname>context</varname> for a type of I/O operation. For
           example, by default, relation data is read into and written out from
           shared buffers. Thus, reads and writes of relation data to and from
-          shared buffers are tracked in <varname>io_context</varname>
+          shared buffers are tracked in <varname>context</varname>
           <literal>normal</literal>.
          </para>
         </listitem>
           <literal>vacuum</literal>: I/O operations performed outside of shared
           buffers while vacuuming and analyzing permanent relations. Temporary
           table vacuums use the same local buffer pool as other temporary table
-          IO operations and are tracked in <varname>io_context</varname>
+          IO operations and are tracked in <varname>context</varname>
           <literal>normal</literal>.
          </para>
         </listitem>
         buffer in order to make it available for another use.
        </para>
        <para>
-        In <varname>io_context</varname> <literal>normal</literal>, this counts
+        In <varname>context</varname> <literal>normal</literal>, this counts
         the number of times a block was evicted from a buffer and replaced with
-        another block. In <varname>io_context</varname>s
+        another block. In <varname>context</varname>s
         <literal>bulkwrite</literal>, <literal>bulkread</literal>, and
         <literal>vacuum</literal>, this counts the number of times a block was
         evicted from shared buffers in order to add the shared buffer to a
         The number of times an existing buffer in a size-limited ring buffer
         outside of shared buffers was reused as part of an I/O operation in the
         <literal>bulkread</literal>, <literal>bulkwrite</literal>, or
-        <literal>vacuum</literal> <varname>io_context</varname>s.
+        <literal>vacuum</literal> <varname>context</varname>s.
        </para>
       </entry>
      </row>
        </para>
        <para>
         Number of <literal>fsync</literal> calls. These are only tracked in
-        <varname>io_context</varname> <literal>normal</literal>.
+        <varname>context</varname> <literal>normal</literal>.
        </para>
       </entry>
      </row>
    in some I/O contexts. These rows are omitted from the view. For example, the
    checkpointer does not checkpoint temporary tables, so there will be no rows
    for <varname>backend_type</varname> <literal>checkpointer</literal> and
-   <varname>io_object</varname> <literal>temp relation</literal>.
+   <varname>object</varname> <literal>temp relation</literal>.
   </para>
 
   <para>
    backend types or on certain I/O objects and/or in certain I/O contexts.
    These cells will be NULL. For example, temporary tables are not
    <literal>fsync</literal>ed, so <varname>fsyncs</varname> will be NULL for
-   <varname>io_object</varname> <literal>temp relation</literal>. Also, the
+   <varname>object</varname> <literal>temp relation</literal>. Also, the
    background writer does not perform reads, so <varname>reads</varname> will
    be NULL in rows for <varname>backend_type</varname> <literal>background
    writer</literal>.
 
 CREATE VIEW pg_stat_io AS
 SELECT
        b.backend_type,
-       b.io_object,
-       b.io_context,
+       b.object,
+       b.context,
        b.reads,
        b.read_time,
        b.writes,
 
 {
    IO_COL_INVALID = -1,
    IO_COL_BACKEND_TYPE,
-   IO_COL_IO_OBJECT,
-   IO_COL_IO_CONTEXT,
+   IO_COL_OBJECT,
+   IO_COL_CONTEXT,
    IO_COL_READS,
    IO_COL_READ_TIME,
    IO_COL_WRITES,
                    continue;
 
                values[IO_COL_BACKEND_TYPE] = bktype_desc;
-               values[IO_COL_IO_CONTEXT] = CStringGetTextDatum(context_name);
-               values[IO_COL_IO_OBJECT] = CStringGetTextDatum(obj_name);
+               values[IO_COL_CONTEXT] = CStringGetTextDatum(context_name);
+               values[IO_COL_OBJECT] = CStringGetTextDatum(obj_name);
                values[IO_COL_RESET_TIME] = TimestampTzGetDatum(reset_time);
 
                /*
 
  */
 
 /*                         yyyymmddN */
-#define CATALOG_VERSION_NO 202304111
+#define CATALOG_VERSION_NO 202304211
 
 #endif
 
   proparallel => 'r', prorettype => 'record', proargtypes => '',
   proallargtypes => '{text,text,text,int8,float8,int8,float8,int8,float8,int8,int8,int8,int8,int8,float8,timestamptz}',
   proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
-  proargnames => '{backend_type,io_object,io_context,reads,read_time,writes,write_time,extends,extend_time,op_bytes,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
+  proargnames => '{backend_type,object,context,reads,read_time,writes,write_time,extends,extend_time,op_bytes,hits,evictions,reuses,fsyncs,fsync_time,stats_reset}',
   prosrc => 'pg_stat_get_io' },
 
 { oid => '1136', descr => 'statistics: information about WAL activity',
 
    FROM pg_stat_get_activity(NULL::integer) s(datid, pid, usesysid, application_name, state, query, wait_event_type, wait_event, xact_start, query_start, backend_start, state_change, client_addr, client_hostname, client_port, backend_xid, backend_xmin, backend_type, ssl, sslversion, sslcipher, sslbits, ssl_client_dn, ssl_client_serial, ssl_issuer_dn, gss_auth, gss_princ, gss_enc, gss_deleg, leader_pid, query_id)
   WHERE (client_port IS NOT NULL);
 pg_stat_io| SELECT backend_type,
-    io_object,
-    io_context,
+    object,
+    context,
     reads,
     read_time,
     writes,
     fsyncs,
     fsync_time,
     stats_reset
-   FROM pg_stat_get_io() b(backend_type, io_object, io_context, reads, read_time, writes, write_time, extends, extend_time, op_bytes, hits, evictions, reuses, fsyncs, fsync_time, stats_reset);
+   FROM pg_stat_get_io() b(backend_type, object, context, reads, read_time, writes, write_time, extends, extend_time, op_bytes, hits, evictions, reuses, fsyncs, fsync_time, stats_reset);
 pg_stat_progress_analyze| SELECT s.pid,
     s.datid,
     d.datname,
 
 -- Create a regular table and insert some data to generate IOCONTEXT_NORMAL
 -- extends.
 SELECT sum(extends) AS io_sum_shared_before_extends
-  FROM pg_stat_io WHERE io_context = 'normal' AND io_object = 'relation' \gset
+  FROM pg_stat_io WHERE context = 'normal' AND object = 'relation' \gset
 SELECT sum(writes) AS writes, sum(fsyncs) AS fsyncs
   FROM pg_stat_io
-  WHERE io_object = 'relation' \gset io_sum_shared_before_
+  WHERE object = 'relation' \gset io_sum_shared_before_
 CREATE TABLE test_io_shared(a int);
 INSERT INTO test_io_shared SELECT i FROM generate_series(1,100)i;
 SELECT pg_stat_force_next_flush();
 (1 row)
 
 SELECT sum(extends) AS io_sum_shared_after_extends
-  FROM pg_stat_io WHERE io_context = 'normal' AND io_object = 'relation' \gset
+  FROM pg_stat_io WHERE context = 'normal' AND object = 'relation' \gset
 SELECT :io_sum_shared_after_extends > :io_sum_shared_before_extends;
  ?column? 
 ----------
 CHECKPOINT;
 SELECT sum(writes) AS writes, sum(fsyncs) AS fsyncs
   FROM pg_stat_io
-  WHERE io_object = 'relation' \gset io_sum_shared_after_
+  WHERE object = 'relation' \gset io_sum_shared_after_
 SELECT :io_sum_shared_after_writes > :io_sum_shared_before_writes;
  ?column? 
 ----------
 -- Change the tablespace so that the table is rewritten directly, then SELECT
 -- from it to cause it to be read back into shared buffers.
 SELECT sum(reads) AS io_sum_shared_before_reads
-  FROM pg_stat_io WHERE io_context = 'normal' AND io_object = 'relation' \gset
+  FROM pg_stat_io WHERE context = 'normal' AND object = 'relation' \gset
 -- Do this in a transaction to prevent spurious failures due to concurrent accesses to our newly
 -- rewritten table, e.g. by autovacuum.
 BEGIN;
 ALTER TABLE test_io_shared SET TABLESPACE regress_tblspace;
 -- SELECT from the table so that the data is read into shared buffers and
--- io_context 'normal', io_object 'relation' reads are counted.
+-- context 'normal', object 'relation' reads are counted.
 SELECT COUNT(*) FROM test_io_shared;
  count 
 -------
 (1 row)
 
 SELECT sum(reads) AS io_sum_shared_after_reads
-  FROM pg_stat_io WHERE io_context = 'normal' AND io_object = 'relation'  \gset
+  FROM pg_stat_io WHERE context = 'normal' AND object = 'relation'  \gset
 SELECT :io_sum_shared_after_reads > :io_sum_shared_before_reads;
  ?column? 
 ----------
 (1 row)
 
 SELECT sum(hits) AS io_sum_shared_before_hits
-  FROM pg_stat_io WHERE io_context = 'normal' AND io_object = 'relation' \gset
+  FROM pg_stat_io WHERE context = 'normal' AND object = 'relation' \gset
 -- Select from the table again to count hits.
 -- Ensure we generate hits by forcing a nested loop self-join with no
 -- materialize node. The outer side's buffer will stay pinned, preventing its
 (1 row)
 
 SELECT sum(hits) AS io_sum_shared_after_hits
-  FROM pg_stat_io WHERE io_context = 'normal' AND io_object = 'relation' \gset
+  FROM pg_stat_io WHERE context = 'normal' AND object = 'relation' \gset
 SELECT :io_sum_shared_after_hits > :io_sum_shared_before_hits;
  ?column? 
 ----------
 CREATE TEMPORARY TABLE test_io_local(a int, b TEXT);
 SELECT sum(extends) AS extends, sum(evictions) AS evictions, sum(writes) AS writes
   FROM pg_stat_io
-  WHERE io_context = 'normal' AND io_object = 'temp relation' \gset io_sum_local_before_
+  WHERE context = 'normal' AND object = 'temp relation' \gset io_sum_local_before_
 -- Insert tuples into the temporary table, generating extends in the stats.
 -- Insert enough values that we need to reuse and write out dirty local
 -- buffers, generating evictions and writes.
 (1 row)
 
 SELECT sum(reads) AS io_sum_local_before_reads
-  FROM pg_stat_io WHERE io_context = 'normal' AND io_object = 'temp relation' \gset
+  FROM pg_stat_io WHERE context = 'normal' AND object = 'temp relation' \gset
 -- Read in evicted buffers, generating reads.
 SELECT COUNT(*) FROM test_io_local;
  count 
        sum(writes) AS writes,
        sum(extends) AS extends
   FROM pg_stat_io
-  WHERE io_context = 'normal' AND io_object = 'temp relation'  \gset io_sum_local_after_
+  WHERE context = 'normal' AND object = 'temp relation'  \gset io_sum_local_after_
 SELECT :io_sum_local_after_evictions > :io_sum_local_before_evictions,
        :io_sum_local_after_reads > :io_sum_local_before_reads,
        :io_sum_local_after_writes > :io_sum_local_before_writes,
 (1 row)
 
 SELECT sum(writes) AS io_sum_local_new_tblspc_writes
-  FROM pg_stat_io WHERE io_context = 'normal' AND io_object = 'temp relation'  \gset
+  FROM pg_stat_io WHERE context = 'normal' AND object = 'temp relation'  \gset
 SELECT :io_sum_local_new_tblspc_writes > :io_sum_local_after_writes;
  ?column? 
 ----------
 -- reads.
 SET wal_skip_threshold = '1 kB';
 SELECT sum(reuses) AS reuses, sum(reads) AS reads
-  FROM pg_stat_io WHERE io_context = 'vacuum' \gset io_sum_vac_strategy_before_
+  FROM pg_stat_io WHERE context = 'vacuum' \gset io_sum_vac_strategy_before_
 CREATE TABLE test_io_vac_strategy(a int, b int) WITH (autovacuum_enabled = 'false');
 INSERT INTO test_io_vac_strategy SELECT i, i from generate_series(1, 8000)i;
 -- Ensure that the next VACUUM will need to perform IO by rewriting the table
 (1 row)
 
 SELECT sum(reuses) AS reuses, sum(reads) AS reads
-  FROM pg_stat_io WHERE io_context = 'vacuum' \gset io_sum_vac_strategy_after_
+  FROM pg_stat_io WHERE context = 'vacuum' \gset io_sum_vac_strategy_after_
 SELECT :io_sum_vac_strategy_after_reads > :io_sum_vac_strategy_before_reads,
        :io_sum_vac_strategy_after_reuses > :io_sum_vac_strategy_before_reuses;
  ?column? | ?column? 
 -- Test that extends done by a CTAS, which uses a BAS_BULKWRITE
 -- BufferAccessStrategy, are tracked in pg_stat_io.
 SELECT sum(extends) AS io_sum_bulkwrite_strategy_extends_before
-  FROM pg_stat_io WHERE io_context = 'bulkwrite' \gset
+  FROM pg_stat_io WHERE context = 'bulkwrite' \gset
 CREATE TABLE test_io_bulkwrite_strategy AS SELECT i FROM generate_series(1,100)i;
 SELECT pg_stat_force_next_flush();
  pg_stat_force_next_flush 
 (1 row)
 
 SELECT sum(extends) AS io_sum_bulkwrite_strategy_extends_after
-  FROM pg_stat_io WHERE io_context = 'bulkwrite' \gset
+  FROM pg_stat_io WHERE context = 'bulkwrite' \gset
 SELECT :io_sum_bulkwrite_strategy_extends_after > :io_sum_bulkwrite_strategy_extends_before;
  ?column? 
 ----------
 
 -- Create a regular table and insert some data to generate IOCONTEXT_NORMAL
 -- extends.
 SELECT sum(extends) AS io_sum_shared_before_extends
-  FROM pg_stat_io WHERE io_context = 'normal' AND io_object = 'relation' \gset
+  FROM pg_stat_io WHERE context = 'normal' AND object = 'relation' \gset
 SELECT sum(writes) AS writes, sum(fsyncs) AS fsyncs
   FROM pg_stat_io
-  WHERE io_object = 'relation' \gset io_sum_shared_before_
+  WHERE object = 'relation' \gset io_sum_shared_before_
 CREATE TABLE test_io_shared(a int);
 INSERT INTO test_io_shared SELECT i FROM generate_series(1,100)i;
 SELECT pg_stat_force_next_flush();
 SELECT sum(extends) AS io_sum_shared_after_extends
-  FROM pg_stat_io WHERE io_context = 'normal' AND io_object = 'relation' \gset
+  FROM pg_stat_io WHERE context = 'normal' AND object = 'relation' \gset
 SELECT :io_sum_shared_after_extends > :io_sum_shared_before_extends;
 
 -- After a checkpoint, there should be some additional IOCONTEXT_NORMAL writes
 CHECKPOINT;
 SELECT sum(writes) AS writes, sum(fsyncs) AS fsyncs
   FROM pg_stat_io
-  WHERE io_object = 'relation' \gset io_sum_shared_after_
+  WHERE object = 'relation' \gset io_sum_shared_after_
 SELECT :io_sum_shared_after_writes > :io_sum_shared_before_writes;
 SELECT current_setting('fsync') = 'off'
   OR :io_sum_shared_after_fsyncs > :io_sum_shared_before_fsyncs;
 -- Change the tablespace so that the table is rewritten directly, then SELECT
 -- from it to cause it to be read back into shared buffers.
 SELECT sum(reads) AS io_sum_shared_before_reads
-  FROM pg_stat_io WHERE io_context = 'normal' AND io_object = 'relation' \gset
+  FROM pg_stat_io WHERE context = 'normal' AND object = 'relation' \gset
 -- Do this in a transaction to prevent spurious failures due to concurrent accesses to our newly
 -- rewritten table, e.g. by autovacuum.
 BEGIN;
 ALTER TABLE test_io_shared SET TABLESPACE regress_tblspace;
 -- SELECT from the table so that the data is read into shared buffers and
--- io_context 'normal', io_object 'relation' reads are counted.
+-- context 'normal', object 'relation' reads are counted.
 SELECT COUNT(*) FROM test_io_shared;
 COMMIT;
 SELECT pg_stat_force_next_flush();
 SELECT sum(reads) AS io_sum_shared_after_reads
-  FROM pg_stat_io WHERE io_context = 'normal' AND io_object = 'relation'  \gset
+  FROM pg_stat_io WHERE context = 'normal' AND object = 'relation'  \gset
 SELECT :io_sum_shared_after_reads > :io_sum_shared_before_reads;
 
 SELECT sum(hits) AS io_sum_shared_before_hits
-  FROM pg_stat_io WHERE io_context = 'normal' AND io_object = 'relation' \gset
+  FROM pg_stat_io WHERE context = 'normal' AND object = 'relation' \gset
 -- Select from the table again to count hits.
 -- Ensure we generate hits by forcing a nested loop self-join with no
 -- materialize node. The outer side's buffer will stay pinned, preventing its
 COMMIT;
 SELECT pg_stat_force_next_flush();
 SELECT sum(hits) AS io_sum_shared_after_hits
-  FROM pg_stat_io WHERE io_context = 'normal' AND io_object = 'relation' \gset
+  FROM pg_stat_io WHERE context = 'normal' AND object = 'relation' \gset
 SELECT :io_sum_shared_after_hits > :io_sum_shared_before_hits;
 
 DROP TABLE test_io_shared;
 CREATE TEMPORARY TABLE test_io_local(a int, b TEXT);
 SELECT sum(extends) AS extends, sum(evictions) AS evictions, sum(writes) AS writes
   FROM pg_stat_io
-  WHERE io_context = 'normal' AND io_object = 'temp relation' \gset io_sum_local_before_
+  WHERE context = 'normal' AND object = 'temp relation' \gset io_sum_local_before_
 -- Insert tuples into the temporary table, generating extends in the stats.
 -- Insert enough values that we need to reuse and write out dirty local
 -- buffers, generating evictions and writes.
 SELECT pg_relation_size('test_io_local') / current_setting('block_size')::int8 > 100;
 
 SELECT sum(reads) AS io_sum_local_before_reads
-  FROM pg_stat_io WHERE io_context = 'normal' AND io_object = 'temp relation' \gset
+  FROM pg_stat_io WHERE context = 'normal' AND object = 'temp relation' \gset
 -- Read in evicted buffers, generating reads.
 SELECT COUNT(*) FROM test_io_local;
 SELECT pg_stat_force_next_flush();
        sum(writes) AS writes,
        sum(extends) AS extends
   FROM pg_stat_io
-  WHERE io_context = 'normal' AND io_object = 'temp relation'  \gset io_sum_local_after_
+  WHERE context = 'normal' AND object = 'temp relation'  \gset io_sum_local_after_
 SELECT :io_sum_local_after_evictions > :io_sum_local_before_evictions,
        :io_sum_local_after_reads > :io_sum_local_before_reads,
        :io_sum_local_after_writes > :io_sum_local_before_writes,
 ALTER TABLE test_io_local SET TABLESPACE regress_tblspace;
 SELECT pg_stat_force_next_flush();
 SELECT sum(writes) AS io_sum_local_new_tblspc_writes
-  FROM pg_stat_io WHERE io_context = 'normal' AND io_object = 'temp relation'  \gset
+  FROM pg_stat_io WHERE context = 'normal' AND object = 'temp relation'  \gset
 SELECT :io_sum_local_new_tblspc_writes > :io_sum_local_after_writes;
 RESET temp_buffers;
 
 -- reads.
 SET wal_skip_threshold = '1 kB';
 SELECT sum(reuses) AS reuses, sum(reads) AS reads
-  FROM pg_stat_io WHERE io_context = 'vacuum' \gset io_sum_vac_strategy_before_
+  FROM pg_stat_io WHERE context = 'vacuum' \gset io_sum_vac_strategy_before_
 CREATE TABLE test_io_vac_strategy(a int, b int) WITH (autovacuum_enabled = 'false');
 INSERT INTO test_io_vac_strategy SELECT i, i from generate_series(1, 8000)i;
 -- Ensure that the next VACUUM will need to perform IO by rewriting the table
 VACUUM (PARALLEL 0) test_io_vac_strategy;
 SELECT pg_stat_force_next_flush();
 SELECT sum(reuses) AS reuses, sum(reads) AS reads
-  FROM pg_stat_io WHERE io_context = 'vacuum' \gset io_sum_vac_strategy_after_
+  FROM pg_stat_io WHERE context = 'vacuum' \gset io_sum_vac_strategy_after_
 SELECT :io_sum_vac_strategy_after_reads > :io_sum_vac_strategy_before_reads,
        :io_sum_vac_strategy_after_reuses > :io_sum_vac_strategy_before_reuses;
 RESET wal_skip_threshold;
 -- Test that extends done by a CTAS, which uses a BAS_BULKWRITE
 -- BufferAccessStrategy, are tracked in pg_stat_io.
 SELECT sum(extends) AS io_sum_bulkwrite_strategy_extends_before
-  FROM pg_stat_io WHERE io_context = 'bulkwrite' \gset
+  FROM pg_stat_io WHERE context = 'bulkwrite' \gset
 CREATE TABLE test_io_bulkwrite_strategy AS SELECT i FROM generate_series(1,100)i;
 SELECT pg_stat_force_next_flush();
 SELECT sum(extends) AS io_sum_bulkwrite_strategy_extends_after
-  FROM pg_stat_io WHERE io_context = 'bulkwrite' \gset
+  FROM pg_stat_io WHERE context = 'bulkwrite' \gset
 SELECT :io_sum_bulkwrite_strategy_extends_after > :io_sum_bulkwrite_strategy_extends_before;
 
 -- Test IO stats reset