io_context == IOCONTEXT_BULKWRITE)
return false;
+ /*
+ * The data checksums launcher scans catalogs and emits WAL records for
+ * checksum state changes. Catalog scans can use a bulkread strategy.
+ */
+ if (bktype == B_DATACHECKSUMSWORKER_LAUNCHER)
+ {
+ if (io_object == IOOBJECT_WAL ||
+ (io_object == IOOBJECT_RELATION &&
+ (io_context == IOCONTEXT_BULKREAD ||
+ io_context == IOCONTEXT_NORMAL)))
+ return true;
+
+ return false;
+ }
+
+ /*
+ * The worker also scans catalogs, then processes relations using a vacuum
+ * access strategy. Catalog scans can use a bulkread strategy.
+ */
+ if (bktype == B_DATACHECKSUMSWORKER_WORKER)
+ {
+ if (io_object == IOOBJECT_WAL ||
+ (io_object == IOOBJECT_RELATION &&
+ (io_context == IOCONTEXT_BULKREAD ||
+ io_context == IOCONTEXT_NORMAL ||
+ io_context == IOCONTEXT_VACUUM)))
+ return true;
+
+ return false;
+ }
+
return true;
}
if (io_object == IOOBJECT_WAL && io_op == IOOP_READ &&
(bktype == B_WAL_RECEIVER || bktype == B_BG_WRITER ||
bktype == B_AUTOVAC_LAUNCHER || bktype == B_AUTOVAC_WORKER ||
+ bktype == B_DATACHECKSUMSWORKER_LAUNCHER ||
+ bktype == B_DATACHECKSUMSWORKER_WORKER ||
bktype == B_WAL_WRITER))
return false;
client backend|wal|init
client backend|wal|normal
datachecksums launcher|relation|bulkread
-datachecksums launcher|relation|bulkwrite
-datachecksums launcher|relation|init
datachecksums launcher|relation|normal
-datachecksums launcher|relation|vacuum
-datachecksums launcher|temp relation|normal
datachecksums launcher|wal|init
datachecksums launcher|wal|normal
datachecksums worker|relation|bulkread
-datachecksums worker|relation|bulkwrite
-datachecksums worker|relation|init
datachecksums worker|relation|normal
datachecksums worker|relation|vacuum
-datachecksums worker|temp relation|normal
datachecksums worker|wal|init
datachecksums worker|wal|normal
io worker|relation|bulkread
walsummarizer|wal|normal
walwriter|wal|init
walwriter|wal|normal
-(95 rows)
+(88 rows)
\a
-- ensure that both seqscan and indexscan plans are allowed
SET enable_seqscan TO on;