mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-15 01:12:56 +00:00
Instead of trying to create missing files on the way, send init fork contents as main fork from pageserver during basebackup. Add test for that. Call put_rel_drop for init forks; previously they weren't removed. Bump vendor/postgres to revert previous approach on Postgres side. Co-authored-by: Arseny Sher <sher-ars@yandex.ru> ref https://github.com/neondatabase/postgres/pull/264 ref https://github.com/neondatabase/postgres/pull/259 ref https://github.com/neondatabase/neon/issues/1222
35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
from fixtures.neon_fixtures import NeonEnv, fork_at_current_lsn
|
|
|
|
|
|
#
|
|
# Test UNLOGGED tables/relations. Postgres copies init fork contents to main
|
|
# fork to reset them during recovery. In Neon, pageserver directly sends init
|
|
# fork contents as main fork during basebackup.
|
|
#
|
|
def test_unlogged(neon_simple_env: NeonEnv):
|
|
env = neon_simple_env
|
|
env.neon_cli.create_branch("test_unlogged", "empty")
|
|
pg = env.postgres.create_start("test_unlogged")
|
|
|
|
conn = pg.connect()
|
|
cur = conn.cursor()
|
|
|
|
cur.execute("CREATE UNLOGGED TABLE iut (id int);")
|
|
# create index to test unlogged index relation as well
|
|
cur.execute("CREATE UNIQUE INDEX iut_idx ON iut (id);")
|
|
cur.execute("INSERT INTO iut values (42);")
|
|
|
|
# create another compute to fetch inital empty contents from pageserver
|
|
fork_at_current_lsn(env, pg, "test_unlogged_basebackup", "test_unlogged")
|
|
pg2 = env.postgres.create_start(
|
|
"test_unlogged_basebackup",
|
|
)
|
|
|
|
conn2 = pg2.connect()
|
|
cur2 = conn2.cursor()
|
|
# after restart table should be empty but valid
|
|
cur2.execute("PREPARE iut_plan (int) AS INSERT INTO iut VALUES ($1)")
|
|
cur2.execute("EXECUTE iut_plan (43);")
|
|
cur2.execute("SELECT * FROM iut")
|
|
assert cur2.fetchall() == [(43,)]
|