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
pull/167/head
Michael Paquier 1 year ago
parent 5ec2c529f5
commit 2d8ef5e24f
  1. 1
      src/backend/utils/errcodes.txt
  2. 4
      src/backend/utils/error/elog.c

@ -439,6 +439,7 @@ Section: Class 58 - System Error (errors external to PostgreSQL itself)
58030 E ERRCODE_IO_ERROR io_error
58P01 E ERRCODE_UNDEFINED_FILE undefined_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

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

Loading…
Cancel
Save