mirror of
https://github.com/neondatabase/neon.git
synced 2025-12-27 16:12:56 +00:00
This patch aims to:
* Unify connection & querying logic of ZenithPagerserver and Postgres.
* Mitigate changes to transaction machinery introduced in `psycopg2 >= 2.9`.
Now it's possible to acquire db connection using the corresponding
method:
```python
pg = postgres.create_start('main')
conn = pg.connect()
...
conn.close()
```
This pattern can be further improved with the help of `closing`:
```python
from contextlib import closing
pg = postgres.create_start('main')
with closing(pg.connect()) as conn:
...
```
All connections produced by this method will have autocommit
enabled by default.
32 lines
1.0 KiB
Python
32 lines
1.0 KiB
Python
from contextlib import closing
|
|
|
|
pytest_plugins = ("fixtures.zenith_fixtures")
|
|
|
|
|
|
#
|
|
# Test CREATE USER to check shared catalog restore
|
|
#
|
|
def test_createuser(zenith_cli, pageserver, postgres, pg_bin):
|
|
zenith_cli.run(["branch", "test_createuser", "empty"])
|
|
|
|
pg = postgres.create_start('test_createuser')
|
|
print("postgres is running on 'test_createuser' branch")
|
|
|
|
with closing(pg.connect()) as conn:
|
|
with conn.cursor() as cur:
|
|
# Cause a 'relmapper' change in the original branch
|
|
cur.execute('CREATE USER testuser with password %s', ('testpwd', ))
|
|
|
|
cur.execute('CHECKPOINT')
|
|
|
|
cur.execute('SELECT pg_current_wal_insert_lsn()')
|
|
lsn = cur.fetchone()[0]
|
|
|
|
# Create a branch
|
|
zenith_cli.run(["branch", "test_createuser2", "test_createuser@" + lsn])
|
|
|
|
pg2 = postgres.create_start('test_createuser2')
|
|
|
|
# Test that you can connect to new branch as a new user
|
|
assert pg2.safe_psql('select current_user', username='testuser') == [('testuser', )]
|