diff --git a/jstests/noPassthrough/query/partial_index_catalog_entry_destroyed_during_query.js b/jstests/noPassthrough/query/partial_index_catalog_entry_destroyed_during_query.js index 29a472e9219..9648911df49 100644 --- a/jstests/noPassthrough/query/partial_index_catalog_entry_destroyed_during_query.js +++ b/jstests/noPassthrough/query/partial_index_catalog_entry_destroyed_during_query.js @@ -1,8 +1,9 @@ /** - * Test that the query engine is capable of running queries when the catalog's in memory cache of objects is destroyed during a yield. - * This testcase serves as a regression test for SERVER-105873 which was a problem with the query optimizer stashing a raw pointer - * to a storage-owned object which is destroyed during a yield and concurrent collMod operation. The comments inline represent the - * state of the code before SERVER-105873 was fixed. + * Test that the query engine is capable of running queries when the catalog's in memory cache of + * objects is destroyed during a yield. This testcase serves as a regression test for SERVER-105873 + * which was a problem with the query optimizer stashing a raw pointer to a storage-owned object + * which is destroyed during a yield and concurrent collMod operation. The comments inline represent + * the state of the code before SERVER-105873 was fixed. */ import {configureFailPoint} from "jstests/libs/fail_point_util.js"; @@ -27,53 +28,61 @@ function testPartialIndex(conn) { insertDocs(coll); - // Ensure first branch of $or has multiple indexed plans and must run the multiplanner. This ensures - // we yield the collection acquisition. - assert.commandWorked(coll.createIndex({a: 1}, {partialFilterExpression: {b: 1}, name: "a_partial"})); + // Ensure first branch of $or has multiple indexed plans and must run the multiplanner. This + // ensures we yield the collection acquisition. + assert.commandWorked( + coll.createIndex({a: 1}, {partialFilterExpression: {b: 1}, name: "a_partial"})); assert.commandWorked(coll.createIndex({b: 1})); // Ensure we yield the collection acquisition. assert.commandWorked(db.adminCommand({setParameter: 1, internalQueryExecYieldIterations: 1})); - // Configure the fail point to pause after the query planner has taken pointers to the catalog owned objects. - let pauseAfterFillingOutIndexEntries = configureFailPoint(conn, "pauseAfterFillingOutIndexEntries"); + // Configure the fail point to pause after the query planner has taken pointers to the catalog + // owned objects. + let pauseAfterFillingOutIndexEntries = + configureFailPoint(conn, "pauseAfterFillingOutIndexEntries"); - const awaitQuery = startParallelShell(function () { + const awaitQuery = startParallelShell(function() { const coll = db[jsTestName()]; - const res = coll - .find({ - $or: [ - {a: 1, b: 1}, - // Ensure one branch does not have an indexed plan. This forces the - // subplanner to fallback to `choosePlanWholeQuery()`. - {c: null}, - ], - }) - .toArray(); + const res = coll.find({ + $or: [ + {a: 1, b: 1}, + // Ensure one branch does not have an indexed plan. This forces the + // subplanner to fallback to `choosePlanWholeQuery()`. + {c: null}, + ], + }) + .toArray(); assert.eq(1001, res.length); }, db.getMongo().port); - // At this point, the parallel shell's query is paused after filling out index entries in 'QueryPlannerParams' and no - // subplanning or multiplanning has began. + // At this point, the parallel shell's query is paused after filling out index entries in + // 'QueryPlannerParams' and no subplanning or multiplanning has began. pauseAfterFillingOutIndexEntries.wait(); - // Perform a collMod which forces the catalog to destroy its in-memory cache of the 'a_partial' index. - assert.commandWorked(db.runCommand({collMod: collName, index: {name: "a_partial", hidden: true}})); - assert.commandWorked(db.runCommand({collMod: collName, index: {name: "a_partial", hidden: false}})); + // Perform a collMod which forces the catalog to destroy its in-memory cache of the 'a_partial' + // index. + assert.commandWorked( + db.runCommand({collMod: collName, index: {name: "a_partial", hidden: true}})); + assert.commandWorked( + db.runCommand({collMod: collName, index: {name: "a_partial", hidden: false}})); - // Begin subplanning and multiplanning of the first branch. This results in a yield which releases the one and only reference - // to the initial copy of the 'a_partial' IndexCatalogEntryImpl which owns the partial filter MatchExpression. On restore, - // the catalog constructs a new copy of the 'a_partial' IndexCatalogEntryImpl. However, before SERVER-105873, the query engine - // was saving a raw pointer to the partial filter expression owned by the first copy of the IndexCatalogEntryImpl, which at - // this point is now destroyed. When the subplanner tries to plans the second branch, it is only able to create a collscan plan, - // which results in falling back to `choosePlanWholeQuery()`, which tries to dereference the destroyed partial index pointer when - // determining index eligibility. + // Begin subplanning and multiplanning of the first branch. This results in a yield which + // releases the one and only reference to the initial copy of the 'a_partial' + // IndexCatalogEntryImpl which owns the partial filter MatchExpression. On restore, the catalog + // constructs a new copy of the 'a_partial' IndexCatalogEntryImpl. However, before + // SERVER-105873, the query engine was saving a raw pointer to the partial filter expression + // owned by the first copy of the IndexCatalogEntryImpl, which at this point is now destroyed. + // When the subplanner tries to plans the second branch, it is only able to create a collscan + // plan, which results in falling back to `choosePlanWholeQuery()`, which tries to dereference + // the destroyed partial index pointer when determining index eligibility. pauseAfterFillingOutIndexEntries.off(); awaitQuery(); } // Test stale pointer to wildcard projection. -// The repro is nearly identical to that of 'testPartialIndex()', so we've omitted the inline comments. +// The repro is nearly identical to that of 'testPartialIndex()', so we've omitted the inline +// comments. function testWildcardIndex(conn) { let db = conn.getDB("test"); const collName = jsTestName(); @@ -84,26 +93,29 @@ function testWildcardIndex(conn) { assert.commandWorked(coll.createIndex({"a.$**": 1}, {name: "a_wildcard"})); assert.commandWorked(coll.createIndex({b: 1})); assert.commandWorked(db.adminCommand({setParameter: 1, internalQueryExecYieldIterations: 1})); - let pauseAfterFillingOutIndexEntries = configureFailPoint(conn, "pauseAfterFillingOutIndexEntries"); - const awaitQuery = startParallelShell(function () { + let pauseAfterFillingOutIndexEntries = + configureFailPoint(conn, "pauseAfterFillingOutIndexEntries"); + const awaitQuery = startParallelShell(function() { const coll = db[jsTestName()]; - const res = coll - .find({ - $or: [{"a.foo": 1, b: 1}, {c: null}], - }) - .toArray(); + const res = coll.find({ + $or: [{"a.foo": 1, b: 1}, {c: null}], + }) + .toArray(); assert.eq(1, res.length); }, db.getMongo().port); pauseAfterFillingOutIndexEntries.wait(); - assert.commandWorked(db.runCommand({collMod: collName, index: {name: "a_wildcard", hidden: true}})); - assert.commandWorked(db.runCommand({collMod: collName, index: {name: "a_wildcard", hidden: false}})); + assert.commandWorked( + db.runCommand({collMod: collName, index: {name: "a_wildcard", hidden: true}})); + assert.commandWorked( + db.runCommand({collMod: collName, index: {name: "a_wildcard", hidden: false}})); pauseAfterFillingOutIndexEntries.off(); awaitQuery(); } // Test stale pointer to collator. -// The repro is nearly identical to that of 'testPartialIndex()', so we've omitted the inline comments. +// The repro is nearly identical to that of 'testPartialIndex()', so we've omitted the inline +// comments. function testCollation(conn) { let db = conn.getDB("test"); const collName = jsTestName(); @@ -118,22 +130,24 @@ function testCollation(conn) { assert.commandWorked(coll.createIndex({a: 1}, {name: "a_collation", collation: collation})); assert.commandWorked(coll.createIndex({b: 1}, {collation: collation})); assert.commandWorked(db.adminCommand({setParameter: 1, internalQueryExecYieldIterations: 1})); - let pauseAfterFillingOutIndexEntries = configureFailPoint(conn, "pauseAfterFillingOutIndexEntries"); - const awaitQuery = startParallelShell(function () { + let pauseAfterFillingOutIndexEntries = + configureFailPoint(conn, "pauseAfterFillingOutIndexEntries"); + const awaitQuery = startParallelShell(function() { const coll = db[jsTestName()]; - const res = coll - .find({ - // Ensure predicate has string operands so collator is consulted. - $or: [{a: "abc", b: "def"}, {c: null}], - }) - .collation({locale: "fr_CA", strength: 2}) - .toArray(); + const res = coll.find({ + // Ensure predicate has string operands so collator is consulted. + $or: [{a: "abc", b: "def"}, {c: null}], + }) + .collation({locale: "fr_CA", strength: 2}) + .toArray(); assert.eq(1, res.length); }, db.getMongo().port); pauseAfterFillingOutIndexEntries.wait(); - assert.commandWorked(db.runCommand({collMod: collName, index: {name: "a_collation", hidden: true}})); - assert.commandWorked(db.runCommand({collMod: collName, index: {name: "a_collation", hidden: false}})); + assert.commandWorked( + db.runCommand({collMod: collName, index: {name: "a_collation", hidden: true}})); + assert.commandWorked( + db.runCommand({collMod: collName, index: {name: "a_collation", hidden: false}})); pauseAfterFillingOutIndexEntries.off(); awaitQuery(); } diff --git a/src/third_party/wiredtiger/dist/filelist.bzl b/src/third_party/wiredtiger/dist/filelist.bzl index 7dd0fc23f9f..f66504a4e38 100644 --- a/src/third_party/wiredtiger/dist/filelist.bzl +++ b/src/third_party/wiredtiger/dist/filelist.bzl @@ -1,253 +1,248 @@ + # DO NOT EDIT: automatically built by dist/s_bazel. # This file is only used by external projects building WiredTiger via Bazel. -WT_FILELIST = [ - "src/block/block_addr.c", - "src/block/block_ckpt.c", - "src/block/block_ckpt_scan.c", - "src/block/block_compact.c", - "src/block/block_ext.c", - "src/block/block_open.c", - "src/block/block_read.c", - "src/block/block_session.c", - "src/block/block_slvg.c", - "src/block/block_vrfy.c", - "src/block/block_write.c", - "src/block_cache/block_cache.c", - "src/block_cache/block_chunkcache.c", - "src/block_cache/block_io.c", - "src/block_cache/block_map.c", - "src/block_cache/block_mgr.c", - "src/block_cache/block_tier.c", - "src/bloom/bloom.c", - "src/btree/bt_compact.c", - "src/btree/bt_curnext.c", - "src/btree/bt_curprev.c", - "src/btree/bt_cursor.c", - "src/btree/bt_debug.c", - "src/btree/bt_delete.c", - "src/btree/bt_discard.c", - "src/btree/bt_handle.c", - "src/btree/bt_import.c", - "src/btree/bt_misc.c", - "src/btree/bt_ovfl.c", - "src/btree/bt_page.c", - "src/btree/bt_prefetch.c", - "src/btree/bt_random.c", - "src/btree/bt_read.c", - "src/btree/bt_ret.c", - "src/btree/bt_slvg.c", - "src/btree/bt_split.c", - "src/btree/bt_stat.c", - "src/btree/bt_sync.c", - "src/btree/bt_sync_obsolete.c", - "src/btree/bt_upgrade.c", - "src/btree/bt_vrfy.c", - "src/btree/bt_vrfy_dsk.c", - "src/btree/bt_walk.c", - "src/btree/col_modify.c", - "src/btree/col_srch.c", - "src/btree/row_key.c", - "src/btree/row_modify.c", - "src/btree/row_srch.c", - "src/call_log/call_log.c", - "src/checksum/software/checksum.c", - "src/conf/conf_bind.c", - "src/conf/conf_compile.c", - "src/conf/conf_get.c", - "src/config/config.c", - "src/config/config_api.c", - "src/config/config_check.c", - "src/config/config_collapse.c", - "src/config/config_def.c", - "src/config/config_ext.c", - "src/config/test_config.c", - "src/conn/api_calc_modify.c", - "src/conn/api_strerror.c", - "src/conn/api_version.c", - "src/conn/conn_api.c", - "src/conn/conn_cache.c", - "src/conn/conn_cache_pool.c", - "src/conn/conn_capacity.c", - "src/conn/conn_chunkcache.c", - "src/conn/conn_ckpt.c", - "src/conn/conn_compact.c", - "src/conn/conn_dhandle.c", - "src/conn/conn_handle.c", - "src/conn/conn_log.c", - "src/conn/conn_open.c", - "src/conn/conn_prefetch.c", - "src/conn/conn_reconfig.c", - "src/conn/conn_stat.c", - "src/conn/conn_sweep.c", - "src/conn/conn_tiered.c", - "src/cursor/cur_backup.c", - "src/cursor/cur_backup_incr.c", - "src/cursor/cur_bulk.c", - "src/cursor/cur_config.c", - "src/cursor/cur_ds.c", - "src/cursor/cur_dump.c", - "src/cursor/cur_file.c", - "src/cursor/cur_hs.c", - "src/cursor/cur_index.c", - "src/cursor/cur_join.c", - "src/cursor/cur_json.c", - "src/cursor/cur_log.c", - "src/cursor/cur_metadata.c", - "src/cursor/cur_stat.c", - "src/cursor/cur_std.c", - "src/cursor/cur_table.c", - "src/cursor/cur_version.c", - "src/evict/evict_file.c", - "src/evict/evict_lru.c", - "src/evict/evict_page.c", - "src/evict/evict_stat.c", - "src/history/hs_conn.c", - "src/history/hs_cursor.c", - "src/history/hs_rec.c", - "src/history/hs_verify.c", - "src/log/log.c", - "src/log/log_auto.c", - "src/log/log_slot.c", - "src/log/log_sys.c", - "src/lsm/lsm_cursor.c", - "src/lsm/lsm_cursor_bulk.c", - "src/lsm/lsm_manager.c", - "src/lsm/lsm_merge.c", - "src/lsm/lsm_meta.c", - "src/lsm/lsm_stat.c", - "src/lsm/lsm_tree.c", - "src/lsm/lsm_work_unit.c", - "src/lsm/lsm_worker.c", - "src/meta/meta_apply.c", - "src/meta/meta_ckpt.c", - "src/meta/meta_ext.c", - "src/meta/meta_table.c", - "src/meta/meta_track.c", - "src/meta/meta_turtle.c", - "src/optrack/optrack.c", - "src/os_common/filename.c", - "src/os_common/os_abort.c", - "src/os_common/os_alloc.c", - "src/os_common/os_errno.c", - "src/os_common/os_fhandle.c", - "src/os_common/os_fs_inmemory.c", - "src/os_common/os_fstream.c", - "src/os_common/os_fstream_stdio.c", - "src/os_common/os_getopt.c", - "src/os_common/os_strtouq.c", - "src/packing/pack_api.c", - "src/packing/pack_impl.c", - "src/packing/pack_stream.c", - "src/reconcile/rec_child.c", - "src/reconcile/rec_col.c", - "src/reconcile/rec_dictionary.c", - "src/reconcile/rec_row.c", - "src/reconcile/rec_track.c", - "src/reconcile/rec_visibility.c", - "src/reconcile/rec_write.c", - "src/schema/schema_alter.c", - "src/schema/schema_create.c", - "src/schema/schema_drop.c", - "src/schema/schema_list.c", - "src/schema/schema_open.c", - "src/schema/schema_plan.c", - "src/schema/schema_project.c", - "src/schema/schema_rename.c", - "src/schema/schema_stat.c", - "src/schema/schema_truncate.c", - "src/schema/schema_util.c", - "src/schema/schema_worker.c", - "src/session/session_api.c", - "src/session/session_compact.c", - "src/session/session_dhandle.c", - "src/session/session_helper.c", - "src/session/session_prefetch.c", - "src/rollback_to_stable/rts_api.c", - "src/rollback_to_stable/rts_btree.c", - "src/rollback_to_stable/rts_btree_walk.c", - "src/rollback_to_stable/rts.c", - "src/rollback_to_stable/rts_history.c", - "src/rollback_to_stable/rts_visibility.c", - "src/support/cond_auto.c", - "src/support/crypto.c", - "src/support/err.c", - "src/support/generation.c", - "src/support/global.c", - "src/support/hash_city.c", - "src/support/hash_fnv.c", - "src/support/hazard.c", - "src/support/hex.c", - "src/support/lock_ext.c", - "src/support/modify.c", - "src/support/mtx_rw.c", - "src/support/pow.c", - "src/support/rand.c", - "src/support/scratch.c", - "src/support/stat.c", - "src/support/thread_group.c", - "src/support/timestamp.c", - "src/support/update_vector.c", - "src/tiered/tiered_config.c", - "src/tiered/tiered_handle.c", - "src/tiered/tiered_work.c", - "src/txn/txn.c", - "src/txn/txn_ckpt.c", - "src/txn/txn_log.c", - "src/txn/txn_recover.c", - "src/txn/txn_timestamp.c", -] +WT_FILELIST = ['src/block/block_addr.c', + 'src/block/block_ckpt.c', + 'src/block/block_ckpt_scan.c', + 'src/block/block_compact.c', + 'src/block/block_ext.c', + 'src/block/block_open.c', + 'src/block/block_read.c', + 'src/block/block_session.c', + 'src/block/block_slvg.c', + 'src/block/block_vrfy.c', + 'src/block/block_write.c', + 'src/block_cache/block_cache.c', + 'src/block_cache/block_chunkcache.c', + 'src/block_cache/block_io.c', + 'src/block_cache/block_map.c', + 'src/block_cache/block_mgr.c', + 'src/block_cache/block_tier.c', + 'src/bloom/bloom.c', + 'src/btree/bt_compact.c', + 'src/btree/bt_curnext.c', + 'src/btree/bt_curprev.c', + 'src/btree/bt_cursor.c', + 'src/btree/bt_debug.c', + 'src/btree/bt_delete.c', + 'src/btree/bt_discard.c', + 'src/btree/bt_handle.c', + 'src/btree/bt_import.c', + 'src/btree/bt_misc.c', + 'src/btree/bt_ovfl.c', + 'src/btree/bt_page.c', + 'src/btree/bt_prefetch.c', + 'src/btree/bt_random.c', + 'src/btree/bt_read.c', + 'src/btree/bt_ret.c', + 'src/btree/bt_slvg.c', + 'src/btree/bt_split.c', + 'src/btree/bt_stat.c', + 'src/btree/bt_sync.c', + 'src/btree/bt_sync_obsolete.c', + 'src/btree/bt_upgrade.c', + 'src/btree/bt_vrfy.c', + 'src/btree/bt_vrfy_dsk.c', + 'src/btree/bt_walk.c', + 'src/btree/col_modify.c', + 'src/btree/col_srch.c', + 'src/btree/row_key.c', + 'src/btree/row_modify.c', + 'src/btree/row_srch.c', + 'src/call_log/call_log.c', + 'src/checksum/software/checksum.c', + 'src/conf/conf_bind.c', + 'src/conf/conf_compile.c', + 'src/conf/conf_get.c', + 'src/config/config.c', + 'src/config/config_api.c', + 'src/config/config_check.c', + 'src/config/config_collapse.c', + 'src/config/config_def.c', + 'src/config/config_ext.c', + 'src/config/test_config.c', + 'src/conn/api_calc_modify.c', + 'src/conn/api_strerror.c', + 'src/conn/api_version.c', + 'src/conn/conn_api.c', + 'src/conn/conn_cache.c', + 'src/conn/conn_cache_pool.c', + 'src/conn/conn_capacity.c', + 'src/conn/conn_chunkcache.c', + 'src/conn/conn_ckpt.c', + 'src/conn/conn_compact.c', + 'src/conn/conn_dhandle.c', + 'src/conn/conn_handle.c', + 'src/conn/conn_log.c', + 'src/conn/conn_open.c', + 'src/conn/conn_prefetch.c', + 'src/conn/conn_reconfig.c', + 'src/conn/conn_stat.c', + 'src/conn/conn_sweep.c', + 'src/conn/conn_tiered.c', + 'src/cursor/cur_backup.c', + 'src/cursor/cur_backup_incr.c', + 'src/cursor/cur_bulk.c', + 'src/cursor/cur_config.c', + 'src/cursor/cur_ds.c', + 'src/cursor/cur_dump.c', + 'src/cursor/cur_file.c', + 'src/cursor/cur_hs.c', + 'src/cursor/cur_index.c', + 'src/cursor/cur_join.c', + 'src/cursor/cur_json.c', + 'src/cursor/cur_log.c', + 'src/cursor/cur_metadata.c', + 'src/cursor/cur_stat.c', + 'src/cursor/cur_std.c', + 'src/cursor/cur_table.c', + 'src/cursor/cur_version.c', + 'src/evict/evict_file.c', + 'src/evict/evict_lru.c', + 'src/evict/evict_page.c', + 'src/evict/evict_stat.c', + 'src/history/hs_conn.c', + 'src/history/hs_cursor.c', + 'src/history/hs_rec.c', + 'src/history/hs_verify.c', + 'src/log/log.c', + 'src/log/log_auto.c', + 'src/log/log_slot.c', + 'src/log/log_sys.c', + 'src/lsm/lsm_cursor.c', + 'src/lsm/lsm_cursor_bulk.c', + 'src/lsm/lsm_manager.c', + 'src/lsm/lsm_merge.c', + 'src/lsm/lsm_meta.c', + 'src/lsm/lsm_stat.c', + 'src/lsm/lsm_tree.c', + 'src/lsm/lsm_work_unit.c', + 'src/lsm/lsm_worker.c', + 'src/meta/meta_apply.c', + 'src/meta/meta_ckpt.c', + 'src/meta/meta_ext.c', + 'src/meta/meta_table.c', + 'src/meta/meta_track.c', + 'src/meta/meta_turtle.c', + 'src/optrack/optrack.c', + 'src/os_common/filename.c', + 'src/os_common/os_abort.c', + 'src/os_common/os_alloc.c', + 'src/os_common/os_errno.c', + 'src/os_common/os_fhandle.c', + 'src/os_common/os_fs_inmemory.c', + 'src/os_common/os_fstream.c', + 'src/os_common/os_fstream_stdio.c', + 'src/os_common/os_getopt.c', + 'src/os_common/os_strtouq.c', + 'src/packing/pack_api.c', + 'src/packing/pack_impl.c', + 'src/packing/pack_stream.c', + 'src/reconcile/rec_child.c', + 'src/reconcile/rec_col.c', + 'src/reconcile/rec_dictionary.c', + 'src/reconcile/rec_row.c', + 'src/reconcile/rec_track.c', + 'src/reconcile/rec_visibility.c', + 'src/reconcile/rec_write.c', + 'src/schema/schema_alter.c', + 'src/schema/schema_create.c', + 'src/schema/schema_drop.c', + 'src/schema/schema_list.c', + 'src/schema/schema_open.c', + 'src/schema/schema_plan.c', + 'src/schema/schema_project.c', + 'src/schema/schema_rename.c', + 'src/schema/schema_stat.c', + 'src/schema/schema_truncate.c', + 'src/schema/schema_util.c', + 'src/schema/schema_worker.c', + 'src/session/session_api.c', + 'src/session/session_compact.c', + 'src/session/session_dhandle.c', + 'src/session/session_helper.c', + 'src/session/session_prefetch.c', + 'src/rollback_to_stable/rts_api.c', + 'src/rollback_to_stable/rts_btree.c', + 'src/rollback_to_stable/rts_btree_walk.c', + 'src/rollback_to_stable/rts.c', + 'src/rollback_to_stable/rts_history.c', + 'src/rollback_to_stable/rts_visibility.c', + 'src/support/cond_auto.c', + 'src/support/crypto.c', + 'src/support/err.c', + 'src/support/generation.c', + 'src/support/global.c', + 'src/support/hash_city.c', + 'src/support/hash_fnv.c', + 'src/support/hazard.c', + 'src/support/hex.c', + 'src/support/lock_ext.c', + 'src/support/modify.c', + 'src/support/mtx_rw.c', + 'src/support/pow.c', + 'src/support/rand.c', + 'src/support/scratch.c', + 'src/support/stat.c', + 'src/support/thread_group.c', + 'src/support/timestamp.c', + 'src/support/update_vector.c', + 'src/tiered/tiered_config.c', + 'src/tiered/tiered_handle.c', + 'src/tiered/tiered_work.c', + 'src/txn/txn.c', + 'src/txn/txn_ckpt.c', + 'src/txn/txn_log.c', + 'src/txn/txn_recover.c', + 'src/txn/txn_timestamp.c'] -WT_FILELIST_ARM64_HOST = ["src/checksum/arm64/crc32-arm64.c"] +WT_FILELIST_ARM64_HOST = ['src/checksum/arm64/crc32-arm64.c'] -WT_FILELIST_LOONGARCH64_HOST = ["src/checksum/loongarch64/crc32-loongarch64.c"] +WT_FILELIST_LOONGARCH64_HOST = ['src/checksum/loongarch64/crc32-loongarch64.c'] -WT_FILELIST_POWERPC_HOST = ["src/checksum/power8/crc32_wrapper.c", "src/checksum/power8/vec_crc32.c"] +WT_FILELIST_POWERPC_HOST = ['src/checksum/power8/crc32_wrapper.c', 'src/checksum/power8/vec_crc32.c'] -WT_FILELIST_RISCV64_HOST = ["src/checksum/riscv64/crc32-riscv64.c"] +WT_FILELIST_RISCV64_HOST = ['src/checksum/riscv64/crc32-riscv64.c'] -WT_FILELIST_X86_HOST = ["src/checksum/x86/crc32-x86-alt.c", "src/checksum/x86/crc32-x86.c"] +WT_FILELIST_X86_HOST = ['src/checksum/x86/crc32-x86-alt.c', 'src/checksum/x86/crc32-x86.c'] -WT_FILELIST_ZSERIES_HOST = ["src/checksum/zseries/crc32-s390x.c", "src/checksum/zseries/crc32le-vx.sx"] +WT_FILELIST_ZSERIES_HOST = ['src/checksum/zseries/crc32-s390x.c', 'src/checksum/zseries/crc32le-vx.sx'] -WT_FILELIST_POSIX_HOST = [ - "src/os_posix/os_dir.c", - "src/os_posix/os_dlopen.c", - "src/os_posix/os_fallocate.c", - "src/os_posix/os_fs.c", - "src/os_posix/os_getenv.c", - "src/os_posix/os_map.c", - "src/os_posix/os_mtx_cond.c", - "src/os_posix/os_once.c", - "src/os_posix/os_pagesize.c", - "src/os_posix/os_path.c", - "src/os_posix/os_priv.c", - "src/os_posix/os_setvbuf.c", - "src/os_posix/os_sleep.c", - "src/os_posix/os_snprintf.c", - "src/os_posix/os_thread.c", - "src/os_posix/os_time.c", - "src/os_posix/os_yield.c", -] +WT_FILELIST_POSIX_HOST = ['src/os_posix/os_dir.c', + 'src/os_posix/os_dlopen.c', + 'src/os_posix/os_fallocate.c', + 'src/os_posix/os_fs.c', + 'src/os_posix/os_getenv.c', + 'src/os_posix/os_map.c', + 'src/os_posix/os_mtx_cond.c', + 'src/os_posix/os_once.c', + 'src/os_posix/os_pagesize.c', + 'src/os_posix/os_path.c', + 'src/os_posix/os_priv.c', + 'src/os_posix/os_setvbuf.c', + 'src/os_posix/os_sleep.c', + 'src/os_posix/os_snprintf.c', + 'src/os_posix/os_thread.c', + 'src/os_posix/os_time.c', + 'src/os_posix/os_yield.c'] -WT_FILELIST_WINDOWS_HOST = [ - "src/os_win/os_dir.c", - "src/os_win/os_dlopen.c", - "src/os_win/os_fs.c", - "src/os_win/os_getenv.c", - "src/os_win/os_map.c", - "src/os_win/os_mtx_cond.c", - "src/os_win/os_once.c", - "src/os_win/os_pagesize.c", - "src/os_win/os_path.c", - "src/os_win/os_priv.c", - "src/os_win/os_setvbuf.c", - "src/os_win/os_sleep.c", - "src/os_win/os_snprintf.c", - "src/os_win/os_thread.c", - "src/os_win/os_time.c", - "src/os_win/os_utf8.c", - "src/os_win/os_winerr.c", - "src/os_win/os_yield.c", -] +WT_FILELIST_WINDOWS_HOST = ['src/os_win/os_dir.c', + 'src/os_win/os_dlopen.c', + 'src/os_win/os_fs.c', + 'src/os_win/os_getenv.c', + 'src/os_win/os_map.c', + 'src/os_win/os_mtx_cond.c', + 'src/os_win/os_once.c', + 'src/os_win/os_pagesize.c', + 'src/os_win/os_path.c', + 'src/os_win/os_priv.c', + 'src/os_win/os_setvbuf.c', + 'src/os_win/os_sleep.c', + 'src/os_win/os_snprintf.c', + 'src/os_win/os_thread.c', + 'src/os_win/os_time.c', + 'src/os_win/os_utf8.c', + 'src/os_win/os_winerr.c', + 'src/os_win/os_yield.c'] diff --git a/src/third_party/wiredtiger/dist/s_all b/src/third_party/wiredtiger/dist/s_all index 533be92b5c5..1ad1299688c 100755 --- a/src/third_party/wiredtiger/dist/s_all +++ b/src/third_party/wiredtiger/dist/s_all @@ -169,6 +169,7 @@ run --bg "style.py" & run --bg "comment_style.py" & run --bg "type_to_str.py" & run --bg "s_include_guards" & +run --bg "s_bazel.py" & # Wait for completion. if [[ -n "$ISTTY" ]]; then diff --git a/src/third_party/wiredtiger/dist/s_bazel.py b/src/third_party/wiredtiger/dist/s_bazel.py new file mode 100755 index 00000000000..ca2dcddea9a --- /dev/null +++ b/src/third_party/wiredtiger/dist/s_bazel.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python3 + +# This script generates a bazel-compatible list of files `filelist.bzl` from `filelist`. + +import pprint + +filelist_bzl = "filelist.bzl" + +platform2files = {} +with open("filelist") as f: + for a in [l.split() for l in f if l != "\n" and not l.startswith("#")]: + file, platform = a[0], f"WT_FILELIST_{a[1]}" if len(a) > 1 else "WT_FILELIST" + platform2files.setdefault(platform, []) + platform2files[platform].append(file) + +res = """ +# DO NOT EDIT: automatically built by dist/s_bazel. + +# This file is only used by external projects building WiredTiger via Bazel. +""" +for platform, files in platform2files.items(): + res += f"\n{platform} = " + pprint.pformat(files) + "\n" + +try: + with open(filelist_bzl) as f: + if res == f.read(): + exit() +except OSError: + pass + +with open(filelist_bzl, "w") as f: + f.write(res) + +print(f"Updated dist/{filelist_bzl}") + diff --git a/src/third_party/wiredtiger/import.data b/src/third_party/wiredtiger/import.data index 27b0847867c..b16c69080fa 100644 --- a/src/third_party/wiredtiger/import.data +++ b/src/third_party/wiredtiger/import.data @@ -2,5 +2,5 @@ "vendor": "wiredtiger", "github": "wiredtiger/wiredtiger", "branch": "mongodb-8.0", - "commit": "77f0b15e94321da5ba2d109321222c56c9d954ad" + "commit": "d2835691d9be240b7bb295a132b28d058a0de5fb" }