Author: kotkov Date: Mon Mar 20 14:59:18 2023 New Revision: 1908573 URL: http://svn.apache.org/viewvc?rev=1908573&view=rev Log: Fix an issue where calling `svn copy` between two different working copies could fail if they had different --store-pristine settings.
Before this change, we were transferring the low-level pristine information (sqlite entries and files) from one db to another. This is no longer enough for some of the cases. For example, there is a case where we need to copy from a WC that doesn't store pristines locally into a WC that does, and the source pristine contents should be read from an unmodified working file. This changeset switches to a more generic approach where we read and install the pristine contents using the wc_textbase layer that automatically handles such cases. * subversion/libsvn_wc/copy.c (copy_versioned_file): Accept the `within_one_wc` parameter. Use the textbase layer to read and install the pristines when the copy happens between two different WCs. (copy_versioned_dir): Accept and propagate the `within_one_wc` parameter. (copy_or_move): No longer call svn_wc__db_pristine_transfer(). Pass the local `within_one_wc` variable further. * subversion/libsvn_wc/wc_db.h (svn_wc__db_pristine_transfer): Remove. * subversion/libsvn_wc/wc_db_pristine.c (maybe_transfer_one_pristine, pristine_transfer_txn, svn_wc__db_pristine_transfer): Remove. * subversion/libsvn_wc/wc-queries.sql (STMT_SELECT_COPY_PRISTINES_F31, STMT_SELECT_COPY_PRISTINES_F32): Remove. Also remove these statements … * subversion/tests/libsvn_wc/wc-queries-test.c (stmt_matches_wc_format): …from here. * subversion/tests/cmdline/store_pristine_tests.py (copy_cross_wc_without_src_pristine): New regression test. (copy_cross_wc_without_dst_pristine): New test. (test_list): Run the new tests. * subversion/tests/libsvn_client/client-test.c (test_wc_add_scenarios): Skip when running for a working copy without pristines. Despite being located in client-test.c, here we test the low-level svn_wc APIs that require svn_wc_textbase_sync() calls to work for WCs without pristines. For now, let's keep testing the old behavior, just for WCs that store all pristines locally. Modified: subversion/trunk/subversion/libsvn_wc/copy.c subversion/trunk/subversion/libsvn_wc/wc-queries.sql subversion/trunk/subversion/libsvn_wc/wc_db.h subversion/trunk/subversion/libsvn_wc/wc_db_pristine.c subversion/trunk/subversion/tests/cmdline/store_pristine_tests.py subversion/trunk/subversion/tests/libsvn_client/client-test.c subversion/trunk/subversion/tests/libsvn_wc/wc-queries-test.c Modified: subversion/trunk/subversion/libsvn_wc/copy.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/copy.c?rev=1908573&r1=1908572&r2=1908573&view=diff ============================================================================== --- subversion/trunk/subversion/libsvn_wc/copy.c (original) +++ subversion/trunk/subversion/libsvn_wc/copy.c Mon Mar 20 14:59:18 2023 @@ -215,6 +215,8 @@ copy_to_tmpdir(svn_skel_t **work_item, If IS_MOVE is true, record move information in working copy meta data in addition to copying the file. + WITHIN_ONE_WC is TRUE if the copy/move is within a single working copy (root) + If the versioned file has a text conflict, and the .mine file exists in the filesystem, copy the .mine file to DST_ABSPATH. Otherwise, copy the versioned file itself. @@ -237,6 +239,7 @@ copy_versioned_file(svn_wc__db_t *db, svn_boolean_t metadata_only, svn_boolean_t conflicted, svn_boolean_t is_move, + svn_boolean_t within_one_wc, const svn_io_dirent2_t *dirent, svn_filesize_t recorded_size, apr_time_t recorded_time, @@ -248,8 +251,45 @@ copy_versioned_file(svn_wc__db_t *db, { svn_skel_t *work_items = NULL; - /* In case we are copying from one WC to another (e.g. an external dir), - ensure the destination WC has a copy of the pristine text. */ + if (within_one_wc) + { + /* In case we are copying within one WC, it already has the pristine. */ + } + else + { + /* In case we are copying from one WC to another (e.g. an external dir), + ensure the destination WC has a copy of the pristine text. */ + + svn_stream_t *contents; + + SVN_ERR(svn_wc__textbase_get_contents(&contents, db, src_abspath, NULL, + TRUE, scratch_pool, scratch_pool)); + if (contents) + { + svn_stream_t *install_stream; + svn_wc__db_install_data_t *install_data; + svn_checksum_t *install_sha1_checksum; + svn_checksum_t *install_md5_checksum; + svn_error_t *err; + + SVN_ERR(svn_wc__textbase_prepare_install(&install_stream, + &install_data, + &install_sha1_checksum, + &install_md5_checksum, + db, dst_abspath, FALSE, + scratch_pool, scratch_pool)); + + err = svn_stream_copy3(contents, install_stream, NULL, NULL, scratch_pool); + if (err) + return svn_error_compose_create(err, + svn_wc__db_pristine_install_abort(install_data, scratch_pool)); + + SVN_ERR(svn_wc__db_pristine_install(install_data, + install_sha1_checksum, + install_md5_checksum, + scratch_pool)); + } + } /* Prepare a temp copy of the filesystem node. It is usually a file, but copy recursively if it's a dir. */ @@ -349,6 +389,7 @@ copy_versioned_dir(svn_wc__db_t *db, const char *tmpdir_abspath, svn_boolean_t metadata_only, svn_boolean_t is_move, + svn_boolean_t within_one_wc, const svn_io_dirent2_t *dirent, svn_cancel_func_t cancel_func, void *cancel_baton, @@ -454,7 +495,7 @@ copy_versioned_dir(svn_wc__db_t *db, dst_op_root_abspath, tmpdir_abspath, metadata_only, info->conflicted, - is_move, + is_move, within_one_wc, disk_children ? svn_hash_gets(disk_children, child_name) @@ -469,7 +510,7 @@ copy_versioned_dir(svn_wc__db_t *db, SVN_ERR(copy_versioned_dir(db, child_src_abspath, child_dst_abspath, dst_op_root_abspath, tmpdir_abspath, - metadata_only, is_move, + metadata_only, is_move, within_one_wc, disk_children ? svn_hash_gets(disk_children, child_name) @@ -839,17 +880,12 @@ copy_or_move(svn_boolean_t *record_move_ is_move = FALSE; } - if (!within_one_wc) - SVN_ERR(svn_wc__db_pristine_transfer(db, src_abspath, dst_wcroot_abspath, - cancel_func, cancel_baton, - scratch_pool)); - if (src_db_kind == svn_node_file || src_db_kind == svn_node_symlink) { err = copy_versioned_file(db, src_abspath, dst_abspath, dst_abspath, - tmpdir_abspath, - metadata_only, conflicted, is_move, + tmpdir_abspath, metadata_only, conflicted, + is_move, within_one_wc, NULL, recorded_size, recorded_time, cancel_func, cancel_baton, notify_func, notify_baton, @@ -888,7 +924,7 @@ copy_or_move(svn_boolean_t *record_move_ err = copy_versioned_dir(db, src_abspath, dst_abspath, dst_abspath, tmpdir_abspath, metadata_only, is_move, - NULL /* dirent */, + within_one_wc, NULL /* dirent */, cancel_func, cancel_baton, notify_func, notify_baton, scratch_pool); Modified: subversion/trunk/subversion/libsvn_wc/wc-queries.sql URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc-queries.sql?rev=1908573&r1=1908572&r2=1908573&view=diff ============================================================================== --- subversion/trunk/subversion/libsvn_wc/wc-queries.sql (original) +++ subversion/trunk/subversion/libsvn_wc/wc-queries.sql Mon Mar 20 14:59:18 2023 @@ -925,44 +925,6 @@ WHERE refcount = 0 DELETE FROM pristine WHERE checksum = ?1 AND refcount = 0 --- STMT_SELECT_COPY_PRISTINES_F31 -/* For the root itself */ -SELECT n.checksum, md5_checksum, size, 1 -FROM nodes_current n -LEFT JOIN pristine p ON n.checksum = p.checksum -WHERE wc_id = ?1 - AND n.local_relpath = ?2 - AND n.checksum IS NOT NULL -UNION ALL -/* And all descendants */ -SELECT n.checksum, md5_checksum, size, 1 -FROM nodes n -LEFT JOIN pristine p ON n.checksum = p.checksum -WHERE wc_id = ?1 - AND IS_STRICT_DESCENDANT_OF(n.local_relpath, ?2) - AND op_depth >= - (SELECT MAX(op_depth) FROM nodes WHERE wc_id = ?1 AND local_relpath = ?2) - AND n.checksum IS NOT NULL - --- STMT_SELECT_COPY_PRISTINES_F32 -/* For the root itself */ -SELECT n.checksum, md5_checksum, size, p.hydrated -FROM nodes_current n -LEFT JOIN pristine p ON n.checksum = p.checksum -WHERE wc_id = ?1 - AND n.local_relpath = ?2 - AND n.checksum IS NOT NULL -UNION ALL -/* And all descendants */ -SELECT n.checksum, md5_checksum, size, p.hydrated -FROM nodes n -LEFT JOIN pristine p ON n.checksum = p.checksum -WHERE wc_id = ?1 - AND IS_STRICT_DESCENDANT_OF(n.local_relpath, ?2) - AND op_depth >= - (SELECT MAX(op_depth) FROM nodes WHERE wc_id = ?1 AND local_relpath = ?2) - AND n.checksum IS NOT NULL - -- STMT_UPDATE_PRISTINE_HYDRATED UPDATE pristine SET hydrated = ?2 WHERE checksum = ?1 Modified: subversion/trunk/subversion/libsvn_wc/wc_db.h URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db.h?rev=1908573&r1=1908572&r2=1908573&view=diff ============================================================================== --- subversion/trunk/subversion/libsvn_wc/wc_db.h (original) +++ subversion/trunk/subversion/libsvn_wc/wc_db.h Mon Mar 20 14:59:18 2023 @@ -1041,16 +1041,6 @@ svn_wc__db_pristine_get_sha1(const svn_c apr_pool_t *scratch_pool); -/* If necessary transfers the PRISTINE files of the tree rooted at - SRC_LOCAL_ABSPATH to the working copy identified by DST_WRI_ABSPATH. */ -svn_error_t * -svn_wc__db_pristine_transfer(svn_wc__db_t *db, - const char *src_local_abspath, - const char *dst_wri_abspath, - svn_cancel_func_t cancel_func, - void *cancel_baton, - apr_pool_t *scratch_pool); - /* Remove the pristine text with SHA-1 checksum SHA1_CHECKSUM from the * pristine store, iff it is not referenced by any of the (other) WC DB * tables. */ Modified: subversion/trunk/subversion/libsvn_wc/wc_db_pristine.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db_pristine.c?rev=1908573&r1=1908572&r2=1908573&view=diff ============================================================================== --- subversion/trunk/subversion/libsvn_wc/wc_db_pristine.c (original) +++ subversion/trunk/subversion/libsvn_wc/wc_db_pristine.c Mon Mar 20 14:59:18 2023 @@ -585,197 +585,6 @@ svn_wc__db_pristine_get_sha1(const svn_c return svn_error_trace(svn_sqlite__reset(stmt)); } -/* Handle the moving of a pristine from SRC_WCROOT to DST_WCROOT. The existing - pristine in SRC_WCROOT is described by CHECKSUM, MD5_CHECKSUM, SIZE and - HYDRATED. */ -static svn_error_t * -maybe_transfer_one_pristine(svn_wc__db_wcroot_t *src_wcroot, - svn_wc__db_wcroot_t *dst_wcroot, - const svn_checksum_t *checksum, - const svn_checksum_t *md5_checksum, - apr_int64_t size, - svn_boolean_t hydrated, - svn_cancel_func_t cancel_func, - void *cancel_baton, - apr_pool_t *scratch_pool) -{ - int stmt_num; - svn_sqlite__stmt_t *stmt; - int affected_rows; - - stmt_num = (dst_wcroot->format >= SVN_WC__HAS_OPTIONAL_PRISTINE - ? STMT_INSERT_OR_IGNORE_PRISTINE_F32 - : STMT_INSERT_OR_IGNORE_PRISTINE_F31); - SVN_ERR(svn_sqlite__get_statement(&stmt, dst_wcroot->sdb, stmt_num)); - SVN_ERR(svn_sqlite__bind_checksum(stmt, 1, checksum, scratch_pool)); - SVN_ERR(svn_sqlite__bind_checksum(stmt, 2, md5_checksum, scratch_pool)); - SVN_ERR(svn_sqlite__bind_int64(stmt, 3, size)); - if (dst_wcroot->format >= SVN_WC__HAS_OPTIONAL_PRISTINE) - SVN_ERR(svn_sqlite__bind_int(stmt, 4, hydrated)); - - SVN_ERR(svn_sqlite__update(&affected_rows, stmt)); - - if (affected_rows == 0) - return SVN_NO_ERROR; - - if (hydrated) - { - const char *pristine_abspath; - svn_stream_t *src_stream; - svn_stream_t *dst_stream; - const char *tmp_abspath; - const char *src_abspath; - svn_error_t *err; - - SVN_ERR(svn_stream_open_unique(&dst_stream, &tmp_abspath, - pristine_get_tempdir(dst_wcroot, - scratch_pool, - scratch_pool), - svn_io_file_del_on_pool_cleanup, - scratch_pool, scratch_pool)); - - SVN_ERR(get_pristine_fname(&src_abspath, src_wcroot->abspath, checksum, - scratch_pool, scratch_pool)); - - SVN_ERR(svn_stream_open_readonly(&src_stream, src_abspath, - scratch_pool, scratch_pool)); - - /* ### Should we verify the SHA1 or MD5 here, or is that too expensive? */ - SVN_ERR(svn_stream_copy3(src_stream, dst_stream, - cancel_func, cancel_baton, - scratch_pool)); - - SVN_ERR(get_pristine_fname(&pristine_abspath, dst_wcroot->abspath, checksum, - scratch_pool, scratch_pool)); - - /* Move the file to its target location. (If it is already there, it is - * an orphan file and it doesn't matter if we overwrite it.) */ - err = svn_io_file_rename2(tmp_abspath, pristine_abspath, FALSE, - scratch_pool); - - /* Maybe the directory doesn't exist yet? */ - if (err && APR_STATUS_IS_ENOENT(err->apr_err)) - { - svn_error_t *err2; - - err2 = svn_io_dir_make(svn_dirent_dirname(pristine_abspath, - scratch_pool), - APR_OS_DEFAULT, scratch_pool); - - if (err2) - /* Creating directory didn't work: Return all errors */ - return svn_error_trace(svn_error_compose_create(err, err2)); - else - /* We could create a directory: retry install */ - svn_error_clear(err); - - SVN_ERR(svn_io_file_rename2(tmp_abspath, pristine_abspath, FALSE, - scratch_pool)); - } - else - SVN_ERR(err); - } - - return SVN_NO_ERROR; -} - -/* Transaction implementation of svn_wc__db_pristine_transfer(). - We have a lock on DST_WCROOT. - */ -static svn_error_t * -pristine_transfer_txn(svn_wc__db_wcroot_t *src_wcroot, - svn_wc__db_wcroot_t *dst_wcroot, - const char *src_relpath, - svn_cancel_func_t cancel_func, - void *cancel_baton, - apr_pool_t *scratch_pool) -{ - int stmt_num; - svn_sqlite__stmt_t *stmt; - svn_boolean_t got_row; - apr_pool_t *iterpool = svn_pool_create(scratch_pool); - - stmt_num = (dst_wcroot->format >= SVN_WC__HAS_OPTIONAL_PRISTINE - ? STMT_SELECT_COPY_PRISTINES_F32 - : STMT_SELECT_COPY_PRISTINES_F31); - SVN_ERR(svn_sqlite__get_statement(&stmt, src_wcroot->sdb, stmt_num)); - SVN_ERR(svn_sqlite__bindf(stmt, "is", src_wcroot->wc_id, src_relpath)); - - /* This obtains an sqlite read lock on src_wcroot */ - SVN_ERR(svn_sqlite__step(&got_row, stmt)); - - while (got_row) - { - const svn_checksum_t *checksum; - const svn_checksum_t *md5_checksum; - apr_int64_t size; - svn_boolean_t hydrated; - svn_error_t *err; - - svn_pool_clear(iterpool); - - SVN_ERR(svn_sqlite__column_checksum(&checksum, stmt, 0, iterpool)); - SVN_ERR(svn_sqlite__column_checksum(&md5_checksum, stmt, 1, iterpool)); - size = svn_sqlite__column_int64(stmt, 2); - hydrated = svn_sqlite__column_boolean(stmt, 3); - - err = maybe_transfer_one_pristine(src_wcroot, dst_wcroot, - checksum, md5_checksum, size, - hydrated, - cancel_func, cancel_baton, - iterpool); - - if (err) - return svn_error_trace(svn_error_compose_create( - err, - svn_sqlite__reset(stmt))); - - SVN_ERR(svn_sqlite__step(&got_row, stmt)); - } - SVN_ERR(svn_sqlite__reset(stmt)); - - svn_pool_destroy(iterpool); - - return SVN_NO_ERROR; -} - -svn_error_t * -svn_wc__db_pristine_transfer(svn_wc__db_t *db, - const char *src_local_abspath, - const char *dst_wri_abspath, - svn_cancel_func_t cancel_func, - void *cancel_baton, - apr_pool_t *scratch_pool) -{ - svn_wc__db_wcroot_t *src_wcroot, *dst_wcroot; - const char *src_relpath, *dst_relpath; - - SVN_ERR(svn_wc__db_wcroot_parse_local_abspath(&src_wcroot, &src_relpath, - db, src_local_abspath, - scratch_pool, scratch_pool)); - VERIFY_USABLE_WCROOT(src_wcroot); - SVN_ERR(svn_wc__db_wcroot_parse_local_abspath(&dst_wcroot, &dst_relpath, - db, dst_wri_abspath, - scratch_pool, scratch_pool)); - VERIFY_USABLE_WCROOT(dst_wcroot); - - if (src_wcroot == dst_wcroot - || src_wcroot->sdb == dst_wcroot->sdb) - { - return SVN_NO_ERROR; /* Nothing to transfer */ - } - - SVN_WC__DB_WITH_TXN( - pristine_transfer_txn(src_wcroot, dst_wcroot, src_relpath, - cancel_func, cancel_baton, scratch_pool), - dst_wcroot); - - return SVN_NO_ERROR; -} - - - - /* If the pristine text referenced by SHA1_CHECKSUM in WCROOT/SDB, whose path * within the pristine store is PRISTINE_ABSPATH, has a reference count of * zero, delete it (both the database row and the disk file). Modified: subversion/trunk/subversion/tests/cmdline/store_pristine_tests.py URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/store_pristine_tests.py?rev=1908573&r1=1908572&r2=1908573&view=diff ============================================================================== --- subversion/trunk/subversion/tests/cmdline/store_pristine_tests.py (original) +++ subversion/trunk/subversion/tests/cmdline/store_pristine_tests.py Mon Mar 20 14:59:18 2023 @@ -850,6 +850,100 @@ def checkout_incompatible_setting(sbox): 'info', '--show-item=store-pristine', '--no-newline', sbox.wc_dir) +def copy_cross_wc_without_src_pristine(sbox): + "cross-wc copy without src pristine" + + sbox.build(empty=True, create_wc=False) + + expected_output = svntest.wc.State(sbox.wc_dir, {}) + expected_wc = svntest.wc.State('', {}) + svntest.actions.run_and_verify_checkout(sbox.repo_url, + sbox.wc_dir, + expected_output, + expected_wc, + [], + '--store-pristine=no') + svntest.actions.run_and_verify_svn( + ['no'], [], + 'info', '--show-item=store-pristine', '--no-newline', + sbox.wc_dir) + + sbox.simple_append('file', 'foo') + sbox.simple_add('file') + sbox.simple_commit(message='r1') + + wc_dir2 = sbox.add_wc_path("other") + expected_output = svntest.wc.State(wc_dir2, {}) + expected_wc = svntest.wc.State('', {}) + svntest.actions.run_and_verify_checkout(sbox.repo_url, + wc_dir2, + expected_output, + expected_wc, + [], + '--store-pristine=yes', '-r0') + svntest.actions.run_and_verify_svn( + ['yes'], [], + 'info', '--show-item=store-pristine', '--no-newline', + wc_dir2) + + svntest.actions.run_and_verify_svn(None, [], 'copy', + sbox.ospath('file'), + wc_dir2) + + expected_status = svntest.wc.State(wc_dir2, { + '' : Item(status=' ', wc_rev=0), + 'file' : Item(status='A ', wc_rev='-', copied='+'), + }) + svntest.actions.run_and_verify_status(wc_dir2, + expected_status) + +def copy_cross_wc_without_dst_pristine(sbox): + "cross-wc copy without dst pristine" + + sbox.build(empty=True, create_wc=False) + + expected_output = svntest.wc.State(sbox.wc_dir, {}) + expected_wc = svntest.wc.State('', {}) + svntest.actions.run_and_verify_checkout(sbox.repo_url, + sbox.wc_dir, + expected_output, + expected_wc, + [], + '--store-pristine=yes') + svntest.actions.run_and_verify_svn( + ['yes'], [], + 'info', '--show-item=store-pristine', '--no-newline', + sbox.wc_dir) + + sbox.simple_append('file', 'foo') + sbox.simple_add('file') + sbox.simple_commit(message='r1') + + wc_dir2 = sbox.add_wc_path("other") + expected_output = svntest.wc.State(wc_dir2, {}) + expected_wc = svntest.wc.State('', {}) + svntest.actions.run_and_verify_checkout(sbox.repo_url, + wc_dir2, + expected_output, + expected_wc, + [], + '--store-pristine=no', '-r0') + svntest.actions.run_and_verify_svn( + ['no'], [], + 'info', '--show-item=store-pristine', '--no-newline', + wc_dir2) + + svntest.actions.run_and_verify_svn(None, [], 'copy', + sbox.ospath('file'), + wc_dir2) + + expected_status = svntest.wc.State(wc_dir2, { + '' : Item(status=' ', wc_rev=0), + 'file' : Item(status='A ', wc_rev='-', copied='+'), + }) + svntest.actions.run_and_verify_status(wc_dir2, + expected_status) + ######################################################################## # Run the tests @@ -879,6 +973,8 @@ test_list = [ None, move_modified_file_with_pristine, move_modified_file_without_pristine, checkout_incompatible_setting, + copy_cross_wc_without_src_pristine, + copy_cross_wc_without_dst_pristine, ] serial_only = True Modified: subversion/trunk/subversion/tests/libsvn_client/client-test.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_client/client-test.c?rev=1908573&r1=1908572&r2=1908573&view=diff ============================================================================== --- subversion/trunk/subversion/tests/libsvn_client/client-test.c (original) +++ subversion/trunk/subversion/tests/libsvn_client/client-test.c Mon Mar 20 14:59:18 2023 @@ -449,6 +449,7 @@ test_wc_add_scenarios(const svn_test_opt const char *ex_file_path; const char *ex_dir_path; const char *ex2_dir_path; + svn_boolean_t store_pristine; /* Create a filesystem and repository containing the Greek tree. */ SVN_ERR(create_greek_repos(&repos_url, "test-wc-add-repos", opts, pool)); @@ -472,6 +473,12 @@ test_wc_add_scenarios(const svn_test_opt opts->store_pristine, ctx, pool)); + SVN_ERR(svn_wc__get_settings(NULL, &store_pristine, ctx->wc_ctx, + wc_path, pool)); + if (!store_pristine) + return svn_error_create(SVN_ERR_TEST_SKIPPED, NULL, + "Test assumes a working copy with pristine"); + /* Now checkout again as wc_path/NEW */ new_dir_path = svn_dirent_join(wc_path, "NEW", pool); SVN_ERR(svn_client_checkout4(NULL, repos_url, new_dir_path, &peg_rev, &rev, Modified: subversion/trunk/subversion/tests/libsvn_wc/wc-queries-test.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_wc/wc-queries-test.c?rev=1908573&r1=1908572&r2=1908573&view=diff ============================================================================== --- subversion/trunk/subversion/tests/libsvn_wc/wc-queries-test.c (original) +++ subversion/trunk/subversion/tests/libsvn_wc/wc-queries-test.c Mon Mar 20 14:59:18 2023 @@ -244,12 +244,9 @@ stmt_matches_wc_format(int stmt_num, case STMT_INSERT_OR_IGNORE_PRISTINE_F31: case STMT_UPSERT_PRISTINE_F31: case STMT_SELECT_PRISTINE_F31: - case STMT_SELECT_COPY_PRISTINES_F31: - return (wc_format <= 31); case STMT_INSERT_OR_IGNORE_PRISTINE_F32: case STMT_UPSERT_PRISTINE_F32: case STMT_SELECT_PRISTINE_F32: - case STMT_SELECT_COPY_PRISTINES_F32: case STMT_UPDATE_PRISTINE_HYDRATED: case STMT_TEXTBASE_ADD_REF: case STMT_TEXTBASE_REMOVE_REF: