[3.4] Properly handle missing schemas/tables in PostgreSQL driver (#5855) (#6045)

Co-authored-by: Jakub Kuczys <me@jacken.men>
This commit is contained in:
Red-GitHubBot
2023-04-19 23:02:51 +02:00
committed by GitHub
parent ce5417602f
commit 20dfe8ad7d
4 changed files with 113 additions and 16 deletions

View File

@@ -137,14 +137,11 @@ class PostgresDriver(BaseDriver):
}
async def get(self, identifier_data: IdentifierData):
try:
result = await self._execute(
"SELECT red_config.get($1)",
encode_identifier_data(identifier_data),
method=self._pool.fetchval,
)
except asyncpg.UndefinedTableError:
raise KeyError from None
result = await self._execute(
"SELECT red_config.get($1)",
encode_identifier_data(identifier_data),
method=self._pool.fetchval,
)
if result is None:
# The result is None both when postgres yields no results, or when it yields a NULL row
@@ -163,12 +160,7 @@ class PostgresDriver(BaseDriver):
raise errors.CannotSetSubfield
async def clear(self, identifier_data: IdentifierData):
try:
await self._execute(
"SELECT red_config.clear($1)", encode_identifier_data(identifier_data)
)
except asyncpg.UndefinedTableError:
pass
await self._execute("SELECT red_config.clear($1)", encode_identifier_data(identifier_data))
async def inc(
self, identifier_data: IdentifierData, value: Union[int, float], default: Union[int, float]