1
0
mirror of https://github.com/postgres/postgres.git synced 2025-04-24 10:47:04 +03:00

Add new error code for "file name too long"

This new error code, named file_name_too_long, maps internally to the
errno ENAMETOOLONG to produce a proper error code rather than an
internal code under errcode_for_file_access().  This error code can be
reached with some SQL command patterns, like a snapshot file name.

Reported-by: Alexander Lakhin
Reviewed-by: Daniel Gustafsson
Discussion: https://postgr.es/m/Zo4ROR9mgy8bowMo@paquier.xyz
This commit is contained in:
Michael Paquier 2024-07-22 09:28:01 +09:00
parent 5ec2c529f5
commit 2d8ef5e24f
2 changed files with 5 additions and 0 deletions

View File

@ -439,6 +439,7 @@ Section: Class 58 - System Error (errors external to PostgreSQL itself)
58030 E ERRCODE_IO_ERROR io_error 58030 E ERRCODE_IO_ERROR io_error
58P01 E ERRCODE_UNDEFINED_FILE undefined_file 58P01 E ERRCODE_UNDEFINED_FILE undefined_file
58P02 E ERRCODE_DUPLICATE_FILE duplicate_file 58P02 E ERRCODE_DUPLICATE_FILE duplicate_file
58P03 E ERRCODE_FILE_NAME_TOO_LONG file_name_too_long
Section: Class F0 - Configuration File Error Section: Class F0 - Configuration File Error

View File

@ -929,6 +929,10 @@ errcode_for_file_access(void)
edata->sqlerrcode = ERRCODE_IO_ERROR; edata->sqlerrcode = ERRCODE_IO_ERROR;
break; break;
case ENAMETOOLONG: /* File name too long */
edata->sqlerrcode = ERRCODE_FILE_NAME_TOO_LONG;
break;
/* All else is classified as internal errors */ /* All else is classified as internal errors */
default: default:
edata->sqlerrcode = ERRCODE_INTERNAL_ERROR; edata->sqlerrcode = ERRCODE_INTERNAL_ERROR;