Skip to content

Commit

Permalink
Merge branch 'main' into non-existing-table/issue3697
Browse files Browse the repository at this point in the history
  • Loading branch information
steve-chavez authored Feb 9, 2025
2 parents 0b52035 + c96dc3e commit ada0e57
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 2 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
+ Fixed `"column <json_aggregate>.<alias> does not exist"` error when selecting `?select=...table(aias:count())`
- #3727, Clarify "listening" logs - @steve-chavez
- #3795, Clarify `Accept: vnd.pgrst.object` error message - @steve-chavez
- #3841, Log `503` client error to stderr - @taimoorzaeem
- #3697, #3602, Handle queries on non-existing table gracefully - @taimoorzaeem

### Changed
Expand Down
5 changes: 3 additions & 2 deletions src/PostgREST/AppState.hs
Original file line number Diff line number Diff line change
Expand Up @@ -261,8 +261,9 @@ usePool AppState{stateObserver=observer, stateMainThreadId=mainThreadId, ..} ses
SQL.ServerError{} ->
when (Error.status (Error.PgError False err) >= HTTP.status500) $
observer $ QueryErrorCodeHighObs err
SQL.SessionUsageError (SQL.QueryError _ _ (SQL.ClientError _)) ->
pure ()
err@(SQL.SessionUsageError (SQL.QueryError _ _ (SQL.ClientError _))) ->
-- An error on the client-side, usually indicates problems wth connection
observer $ QueryErrorCodeHighObs err
)

return res
Expand Down
19 changes: 19 additions & 0 deletions test/io/test_io.py
Original file line number Diff line number Diff line change
Expand Up @@ -1695,3 +1695,22 @@ def test_jwt_cache_purges_expired_entries(defaultenv):
response = postgrest.session.get("/authors_only", headers=hdrs3)

assert response.status_code == 200


def test_pgrst_log_503_client_error_to_stderr(defaultenv):
"PostgREST should log 503 errors to stderr"

env = {
**defaultenv,
"PGAPPNAME": "test-io",
}

with run(env=env) as postgrest:

postgrest.session.get("/rpc/terminate_pgrst?appname=test-io")

output = postgrest.read_stdout(nlines=6)

log_message = '{"code":"PGRST001","details":"no connection to the server\\n","hint":null,"message":"Database client error. Retrying the connection."}\n'

assert any(log_message in line for line in output)

0 comments on commit ada0e57

Please sign in to comment.