mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-31 10:30:33 +03:00 
			
		
		
		
	CREATE STATISTICS: improve misleading error message
The previous change (commit f225473cba) was still not on target,
because it talked about relation kinds, which are not what is being
checked here.  Provide a more accurate message.
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/CACJufxEZ48toGH0Em_6vdsT57Y3L8pLF=DZCQ_gCii6=C3MeXw@mail.gmail.com
			
			
This commit is contained in:
		| @@ -1884,8 +1884,7 @@ ProcessUtilitySlow(ParseState *pstate, | ||||
| 					if (!IsA(rel, RangeVar)) | ||||
| 						ereport(ERROR, | ||||
| 								(errcode(ERRCODE_FEATURE_NOT_SUPPORTED), | ||||
| 								 errmsg("cannot create statistics on the specified relation"), | ||||
| 								 errdetail("CREATE STATISTICS only supports tables, foreign tables and materialized views."))); | ||||
| 								 errmsg("CREATE STATISTICS only supports relation names in the FROM clause"))); | ||||
|  | ||||
| 					/* | ||||
| 					 * CREATE STATISTICS will influence future execution plans | ||||
|   | ||||
| @@ -56,26 +56,20 @@ CREATE STATISTICS tst (unrecognized) ON x, y FROM ext_stats_test; | ||||
| ERROR:  unrecognized statistics kind "unrecognized" | ||||
| -- unsupported targets | ||||
| CREATE STATISTICS tst ON a FROM (VALUES (x)) AS foo; | ||||
| ERROR:  cannot create statistics on the specified relation | ||||
| DETAIL:  CREATE STATISTICS only supports tables, foreign tables and materialized views. | ||||
| ERROR:  CREATE STATISTICS only supports relation names in the FROM clause | ||||
| CREATE STATISTICS tst ON a FROM foo NATURAL JOIN bar; | ||||
| ERROR:  cannot create statistics on the specified relation | ||||
| DETAIL:  CREATE STATISTICS only supports tables, foreign tables and materialized views. | ||||
| ERROR:  CREATE STATISTICS only supports relation names in the FROM clause | ||||
| CREATE STATISTICS tst ON a FROM (SELECT * FROM ext_stats_test) AS foo; | ||||
| ERROR:  cannot create statistics on the specified relation | ||||
| DETAIL:  CREATE STATISTICS only supports tables, foreign tables and materialized views. | ||||
| ERROR:  CREATE STATISTICS only supports relation names in the FROM clause | ||||
| CREATE STATISTICS tst ON a FROM ext_stats_test s TABLESAMPLE system (x); | ||||
| ERROR:  cannot create statistics on the specified relation | ||||
| DETAIL:  CREATE STATISTICS only supports tables, foreign tables and materialized views. | ||||
| ERROR:  CREATE STATISTICS only supports relation names in the FROM clause | ||||
| CREATE STATISTICS tst ON a FROM XMLTABLE('foo' PASSING 'bar' COLUMNS a text); | ||||
| ERROR:  cannot create statistics on the specified relation | ||||
| DETAIL:  CREATE STATISTICS only supports tables, foreign tables and materialized views. | ||||
| ERROR:  CREATE STATISTICS only supports relation names in the FROM clause | ||||
| CREATE FUNCTION tftest(int) returns table(a int, b int) as $$ | ||||
| SELECT $1, $1+i FROM generate_series(1,5) g(i); | ||||
| $$ LANGUAGE sql IMMUTABLE STRICT; | ||||
| CREATE STATISTICS alt_stat2 ON a FROM tftest(1); | ||||
| ERROR:  cannot create statistics on the specified relation | ||||
| DETAIL:  CREATE STATISTICS only supports tables, foreign tables and materialized views. | ||||
| ERROR:  CREATE STATISTICS only supports relation names in the FROM clause | ||||
| DROP FUNCTION tftest; | ||||
| -- incorrect expressions | ||||
| CREATE STATISTICS tst ON (y) FROM ext_stats_test; -- single column reference | ||||
|   | ||||
		Reference in New Issue
	
	Block a user