mirror of
https://github.com/postgres/postgres.git
synced 2025-04-27 22:56:53 +03:00
Improve pg_set_attribute_stats() error message.
Previously, an invalid attribute name was caught, but the error message was unhelpful.
This commit is contained in:
parent
7b8b8dddd6
commit
4b096c67e0
@ -161,6 +161,11 @@ attribute_statistics_update(FunctionCallInfo fcinfo, int elevel)
|
|||||||
stats_check_required_arg(fcinfo, attarginfo, ATTNAME_ARG);
|
stats_check_required_arg(fcinfo, attarginfo, ATTNAME_ARG);
|
||||||
attname = PG_GETARG_NAME(ATTNAME_ARG);
|
attname = PG_GETARG_NAME(ATTNAME_ARG);
|
||||||
attnum = get_attnum(reloid, NameStr(*attname));
|
attnum = get_attnum(reloid, NameStr(*attname));
|
||||||
|
if (attnum == InvalidAttrNumber)
|
||||||
|
ereport(ERROR,
|
||||||
|
(errcode(ERRCODE_UNDEFINED_COLUMN),
|
||||||
|
errmsg("column \"%s\" of relation \"%s\" does not exist",
|
||||||
|
NameStr(*attname), get_rel_name(reloid))));
|
||||||
|
|
||||||
stats_check_required_arg(fcinfo, attarginfo, INHERITED_ARG);
|
stats_check_required_arg(fcinfo, attarginfo, INHERITED_ARG);
|
||||||
inherited = PG_GETARG_BOOL(INHERITED_ARG);
|
inherited = PG_GETARG_BOOL(INHERITED_ARG);
|
||||||
@ -860,6 +865,11 @@ pg_clear_attribute_stats(PG_FUNCTION_ARGS)
|
|||||||
stats_check_required_arg(fcinfo, attarginfo, ATTNAME_ARG);
|
stats_check_required_arg(fcinfo, attarginfo, ATTNAME_ARG);
|
||||||
attname = PG_GETARG_NAME(ATTNAME_ARG);
|
attname = PG_GETARG_NAME(ATTNAME_ARG);
|
||||||
attnum = get_attnum(reloid, NameStr(*attname));
|
attnum = get_attnum(reloid, NameStr(*attname));
|
||||||
|
if (attnum == InvalidAttrNumber)
|
||||||
|
ereport(ERROR,
|
||||||
|
(errcode(ERRCODE_UNDEFINED_COLUMN),
|
||||||
|
errmsg("column \"%s\" of relation \"%s\" does not exist",
|
||||||
|
NameStr(*attname), get_rel_name(reloid))));
|
||||||
|
|
||||||
stats_check_required_arg(fcinfo, attarginfo, INHERITED_ARG);
|
stats_check_required_arg(fcinfo, attarginfo, INHERITED_ARG);
|
||||||
inherited = PG_GETARG_BOOL(INHERITED_ARG);
|
inherited = PG_GETARG_BOOL(INHERITED_ARG);
|
||||||
|
@ -180,6 +180,12 @@ SELECT pg_catalog.pg_set_attribute_stats(
|
|||||||
avg_width => 2::integer,
|
avg_width => 2::integer,
|
||||||
n_distinct => 0.3::real);
|
n_distinct => 0.3::real);
|
||||||
ERROR: could not open relation with OID 0
|
ERROR: could not open relation with OID 0
|
||||||
|
-- error: object doesn't exist
|
||||||
|
SELECT pg_catalog.pg_clear_attribute_stats(
|
||||||
|
relation => '0'::oid,
|
||||||
|
attname => 'id'::name,
|
||||||
|
inherited => false::boolean);
|
||||||
|
ERROR: could not open relation with OID 0
|
||||||
-- error: relation null
|
-- error: relation null
|
||||||
SELECT pg_catalog.pg_set_attribute_stats(
|
SELECT pg_catalog.pg_set_attribute_stats(
|
||||||
relation => NULL::oid,
|
relation => NULL::oid,
|
||||||
@ -189,6 +195,21 @@ SELECT pg_catalog.pg_set_attribute_stats(
|
|||||||
avg_width => 2::integer,
|
avg_width => 2::integer,
|
||||||
n_distinct => 0.3::real);
|
n_distinct => 0.3::real);
|
||||||
ERROR: "relation" cannot be NULL
|
ERROR: "relation" cannot be NULL
|
||||||
|
-- error: attname doesn't exist
|
||||||
|
SELECT pg_catalog.pg_set_attribute_stats(
|
||||||
|
relation => 'stats_import.test'::regclass,
|
||||||
|
attname => 'nope'::name,
|
||||||
|
inherited => false::boolean,
|
||||||
|
null_frac => 0.1::real,
|
||||||
|
avg_width => 2::integer,
|
||||||
|
n_distinct => 0.3::real);
|
||||||
|
ERROR: column "nope" of relation "test" does not exist
|
||||||
|
-- error: attname doesn't exist
|
||||||
|
SELECT pg_catalog.pg_clear_attribute_stats(
|
||||||
|
relation => 'stats_import.test'::regclass,
|
||||||
|
attname => 'nope'::name,
|
||||||
|
inherited => false::boolean);
|
||||||
|
ERROR: column "nope" of relation "test" does not exist
|
||||||
-- error: attname null
|
-- error: attname null
|
||||||
SELECT pg_catalog.pg_set_attribute_stats(
|
SELECT pg_catalog.pg_set_attribute_stats(
|
||||||
relation => 'stats_import.test'::regclass,
|
relation => 'stats_import.test'::regclass,
|
||||||
@ -301,7 +322,7 @@ SELECT pg_catalog.pg_set_attribute_stats(
|
|||||||
most_common_freqs => '{0.2,0.1}'::real[]
|
most_common_freqs => '{0.2,0.1}'::real[]
|
||||||
);
|
);
|
||||||
ERROR: invalid input syntax for type integer: "2023-09-30"
|
ERROR: invalid input syntax for type integer: "2023-09-30"
|
||||||
-- warning: mcv cast failure
|
-- error: mcv cast failure
|
||||||
SELECT pg_catalog.pg_set_attribute_stats(
|
SELECT pg_catalog.pg_set_attribute_stats(
|
||||||
relation => 'stats_import.test'::regclass,
|
relation => 'stats_import.test'::regclass,
|
||||||
attname => 'id'::name,
|
attname => 'id'::name,
|
||||||
|
@ -130,6 +130,12 @@ SELECT pg_catalog.pg_set_attribute_stats(
|
|||||||
avg_width => 2::integer,
|
avg_width => 2::integer,
|
||||||
n_distinct => 0.3::real);
|
n_distinct => 0.3::real);
|
||||||
|
|
||||||
|
-- error: object doesn't exist
|
||||||
|
SELECT pg_catalog.pg_clear_attribute_stats(
|
||||||
|
relation => '0'::oid,
|
||||||
|
attname => 'id'::name,
|
||||||
|
inherited => false::boolean);
|
||||||
|
|
||||||
-- error: relation null
|
-- error: relation null
|
||||||
SELECT pg_catalog.pg_set_attribute_stats(
|
SELECT pg_catalog.pg_set_attribute_stats(
|
||||||
relation => NULL::oid,
|
relation => NULL::oid,
|
||||||
@ -139,6 +145,21 @@ SELECT pg_catalog.pg_set_attribute_stats(
|
|||||||
avg_width => 2::integer,
|
avg_width => 2::integer,
|
||||||
n_distinct => 0.3::real);
|
n_distinct => 0.3::real);
|
||||||
|
|
||||||
|
-- error: attname doesn't exist
|
||||||
|
SELECT pg_catalog.pg_set_attribute_stats(
|
||||||
|
relation => 'stats_import.test'::regclass,
|
||||||
|
attname => 'nope'::name,
|
||||||
|
inherited => false::boolean,
|
||||||
|
null_frac => 0.1::real,
|
||||||
|
avg_width => 2::integer,
|
||||||
|
n_distinct => 0.3::real);
|
||||||
|
|
||||||
|
-- error: attname doesn't exist
|
||||||
|
SELECT pg_catalog.pg_clear_attribute_stats(
|
||||||
|
relation => 'stats_import.test'::regclass,
|
||||||
|
attname => 'nope'::name,
|
||||||
|
inherited => false::boolean);
|
||||||
|
|
||||||
-- error: attname null
|
-- error: attname null
|
||||||
SELECT pg_catalog.pg_set_attribute_stats(
|
SELECT pg_catalog.pg_set_attribute_stats(
|
||||||
relation => 'stats_import.test'::regclass,
|
relation => 'stats_import.test'::regclass,
|
||||||
@ -231,7 +252,7 @@ SELECT pg_catalog.pg_set_attribute_stats(
|
|||||||
most_common_freqs => '{0.2,0.1}'::real[]
|
most_common_freqs => '{0.2,0.1}'::real[]
|
||||||
);
|
);
|
||||||
|
|
||||||
-- warning: mcv cast failure
|
-- error: mcv cast failure
|
||||||
SELECT pg_catalog.pg_set_attribute_stats(
|
SELECT pg_catalog.pg_set_attribute_stats(
|
||||||
relation => 'stats_import.test'::regclass,
|
relation => 'stats_import.test'::regclass,
|
||||||
attname => 'id'::name,
|
attname => 'id'::name,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user