products/Sources/formale Sprachen/C/Postgres/src/test/regress/sql/   (Postgres Database Version 18.4©)  Datei vom 11.4.2026 mit Größe 3 kB image not shown  

Quellcode-Bibliothek mvcc.sql

  Sprache: SQL
 

--
-- Verify that index scans encountering dead rows produced by an
-- aborted subtransaction of the current transaction can utilize the
-- kill_prior_tuple optimization
--
-- NB: The table size is currently *not* expected to stay the same, we
-- don't have logic to trigger opportunistic pruning in cases like
-- this.
BEGIN;

SET LOCAL enable_seqscan = false;
SET LOCAL enable_indexonlyscan = false;
SET LOCAL enable_bitmapscan = false;

-- Can't easily use a unique index, since dead tuples can be found
-- independent of the kill_prior_tuples optimization.
CREATE TABLE clean_aborted_self(key int, data text);
CREATE INDEX clean_aborted_self_key ON clean_aborted_self(key);
INSERT INTO clean_aborted_self (key, data) VALUES (-1'just to allocate metapage');

-- save index size from before the changes, for comparison
SELECT pg_relation_size('clean_aborted_self_key'AS clean_aborted_self_key_before \gset

DO $$
BEGIN
    -- iterate often enough to see index growth even on larger-than-default page sizes
    FOR i IN 1..100 LOOP
        BEGIN
     -- perform index scan over all the inserted keys to get them to be seen as dead
            IF EXISTS(SELECT * FROM clean_aborted_self WHERE key > 0 AND key < 100THEN
         RAISE data_corrupted USING MESSAGE = 'these rows should not exist';
            END IF;
            INSERT INTO clean_aborted_self SELECT g.i, 'rolling back in a sec' FROM generate_series(1100) g(i);
     -- just some error that's not normally thrown
     RAISE reading_sql_data_not_permitted USING MESSAGE = 'round and round again';
 EXCEPTION WHEN reading_sql_data_not_permitted THEN END;
    END LOOP;
END;$$;

-- show sizes only if they differ
SELECT :clean_aborted_self_key_before AS size_before, pg_relation_size('clean_aborted_self_key') size_after
WHERE :clean_aborted_self_key_before != pg_relation_size('clean_aborted_self_key');

ROLLBACK;

Messung V0.5 in Prozent
C=84 H=96 G=90

¤ Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.0.13Bemerkung:  (vorverarbeitet am  2026-08-08) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.