* err_generic_string -- used to set individual ErrorData string fields * identified by PG_DIAG_xxx codes. * * This intentionally only supports fields that don't use localized strings, * so that there are no translation considerations. * * Most potential callers should not use this directly, but instead prefer * higher-level abstractions, such as errtablecol() (see relcache.c). */
| 1586 | * higher-level abstractions, such as errtablecol() (see relcache.c). |
| 1587 | */ |
| 1588 | void |
| 1589 | err_generic_string(int field, const char *str) |
| 1590 | { |
| 1591 | ErrorData *edata = &errordata[errordata_stack_depth]; |
| 1592 | |
| 1593 | /* we don't bother incrementing recursion_depth */ |
| 1594 | CHECK_STACK_DEPTH(); |
| 1595 | |
| 1596 | switch (field) |
| 1597 | { |
| 1598 | case PG_DIAG_SCHEMA_NAME: |
| 1599 | set_errdata_field(edata->assoc_context, &edata->schema_name, str); |
| 1600 | break; |
| 1601 | case PG_DIAG_TABLE_NAME: |
| 1602 | set_errdata_field(edata->assoc_context, &edata->table_name, str); |
| 1603 | break; |
| 1604 | case PG_DIAG_COLUMN_NAME: |
| 1605 | set_errdata_field(edata->assoc_context, &edata->column_name, str); |
| 1606 | break; |
| 1607 | case PG_DIAG_DATATYPE_NAME: |
| 1608 | set_errdata_field(edata->assoc_context, &edata->datatype_name, str); |
| 1609 | break; |
| 1610 | case PG_DIAG_CONSTRAINT_NAME: |
| 1611 | set_errdata_field(edata->assoc_context, &edata->constraint_name, str); |
| 1612 | break; |
| 1613 | default: |
| 1614 | elog(ERROR, "unsupported ErrorData field id: %d", field); |
| 1615 | break; |
| 1616 | } |
| 1617 | } |
| 1618 | |
| 1619 | /* |
| 1620 | * set_errdata_field --- set an ErrorData string field |
no test coverage detected