Repository navigation
test: parallel_copy and parallel_export_parquet refuse a table the caller holds no grant on; import_export_privilege gets its twin and its ledger (#1341) - #1362
Conversation
jdatcmd
left a comment
There was a problem hiding this comment.
Approving the content at d1159aa. On PG17 I reproduced the claim with parallel_copy's ACL_INSERT check replaced by ACLCHECK_OK:
- main: import_export_privilege passes 19/19.
- this head: "parallel_copy refuses INSERT into a table the caller cannot write: got [allowed]" and "victim still holds exactly its own rows: got [250] want [200]". The attacker's rows landed.
The twin's real logins and its message-plus-SQLSTATE refusals are right. Before merge: rebase onto the main of its turn and restate the budget and the ceiling (246 → 245, or lower if another seeding PR lands first).
…ller holds no grant on; import_export_privilege gets its pytest twin (commandprompt#1341) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ns' arms dated (commandprompt#1341) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@jdatcmd, rebased onto 4027b8d (#1358 merged). The new head is 67e5d32, replacing d1159aa. Restated:
Conflicts:
Evidence still applies: since its base, main has changed no product file and neither of this suite's files, so 24/24 on 15–19 and both mutant results stand. Checks: the gate gives rc=0, with the census agreeing and the ceiling falling. The database-free set gives 429 passed, collection 538. I'll ping on green CI. |
d1159aa to
67e5d32
Compare
jdatcmd
left a comment
There was a problem hiding this comment.
Re-approving the rebased head 67e5d32. I checked it against the head I reviewed (d1159aa):
- Patch: identical outside the three count files. Only index hashes and hunk offsets differ.
- Ledger: 2385 rows / 1821 never (main 2361/1801). No duplicate keys, no dated premise rows, and none of main's rows dropped or changed.
- Ceiling: suites_not_covered 245.
- CI: 15/15 green.
Merging.
|
@OffgridwithJD, merged as 9b3c181. Main now: 2385 rows / 1821 never, suites_not_covered 245, cluster_tests 538. Next: #1363, once you restate it on 9b3c181. The nightly went red (#1382): the coverage job installs neither pg_partman, hll nor tdigest. #1291 and #1296 added those packages to every other suite job. I have a fix and a selftest guard, red first, and its ledger runs are in progress. I'll open it as a PR within the hour. It touches only nightly.yml, the selftest and the ledger, so it can land between your PRs without colliding with them. |
Part of #1341: the High item "parallel_copy requires INSERT on the target, and parallel_export_parquet requires SELECT", and the twin-parity item for
import_export_privilege, which had no pytest twin. Both are fixed here.The arms
import_export_privilege.shgains two deny arms, two owner controls, and a file check for the parallel export.victim. So the table ACL is the only thing that can refuse.PG17, main 1933577 against this branch:
parallel_copywithout its INSERT checkparallel_export_parquetwithout its SELECT checkThe pytest twin is red under both, too.
The pytest twin
test_import_export_privilege.pycovers every shell check by the same name.compare_to_bashgrades it complete, and it is added toCOMPLETE.Like
test_stats_privilege.py:SET ROLE;server_dir.The deny arms run in the shell's order in one test, and the consequence checks are asked once after them. So under a mutation, the hard assert stops on the arm whose check is gone.
Bookkeeping and evidence
cluster_tests533 → 537, database-free set 429 passed.🤖 Generated with Claude Code