Обсуждение: Column mis-spelling hints vs case folding

Поиск
Список
Период
Сортировка

Column mis-spelling hints vs case folding

От
Tom Lane
Дата:
A newbie error that we see *constantly* is misunderstanding identifier
case-folding rules.  ISTM that commit e529cd4ff missed a chance to help
with that.  You do get a hint for this:

regression=# create table t1 (foo int, "Bar" int);
CREATE TABLE
regression=# select bar from t1;
ERROR:  column "bar" does not exist
LINE 1: select bar from t1;              ^
HINT:  Perhaps you meant to reference the column "t1"."Bar".

but apparently it's just treating that as a vanilla one-mistyped-character
error, because there's no hint for this:

regression=# create table t2 (foo int, "BAR" int);
CREATE TABLE
regression=# select BAR from t2;
ERROR:  column "bar" does not exist
LINE 1: select BAR from t2;              ^

I think this hint might be a lot more useful if its comparison mechanism
were case-insensitive.
        regards, tom lane



Re: Column mis-spelling hints vs case folding

От
Robert Haas
Дата:
On Sun, Apr 5, 2015 at 12:16 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> A newbie error that we see *constantly* is misunderstanding identifier
> case-folding rules.  ISTM that commit e529cd4ff missed a chance to help
> with that.  You do get a hint for this:
>
> regression=# create table t1 (foo int, "Bar" int);
> CREATE TABLE
> regression=# select bar from t1;
> ERROR:  column "bar" does not exist
> LINE 1: select bar from t1;
>                ^
> HINT:  Perhaps you meant to reference the column "t1"."Bar".
>
> but apparently it's just treating that as a vanilla one-mistyped-character
> error, because there's no hint for this:
>
> regression=# create table t2 (foo int, "BAR" int);
> CREATE TABLE
> regression=# select BAR from t2;
> ERROR:  column "bar" does not exist
> LINE 1: select BAR from t2;
>                ^
>
> I think this hint might be a lot more useful if its comparison mechanism
> were case-insensitive.

If you want to make that change, I will not object.

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company



Re: Column mis-spelling hints vs case folding

От
Greg Stark
Дата:
<p dir="ltr"><br /> On 7 Apr 2015 09:37, "Robert Haas" <<a
href="mailto:robertmhaas@gmail.com">robertmhaas@gmail.com</a>>wrote:<br /> ><br /> > On Sun, Apr 5, 2015 at
12:16PM, Tom Lane <<a href="mailto:tgl@sss.pgh.pa.us">tgl@sss.pgh.pa.us</a>> wrote:<br /> > > A newbie
errorthat we see *constantly* is misunderstanding identifier<br /> > > case-folding rules. <br /><p
dir="ltr">>> I think this hint might be a lot more useful if its comparison mechanism<br /> > > were
case-insensitive.<br/> ><br /> > If you want to make that change, I will not object.<p dir="ltr">If you just make
outcase insensitive that would be an improvement. Nobody sane has similar columns that differ only in case.<p
dir="ltr">Butif the original token was not quoted and the suggested token requires quoting IWBNI the hint directly
addressedthat source of confusion.<p dir="ltr">But if that gets fiddly, trying to squeeze too much in one hint then
betterthe generic hint then nothing at all. I don't want to kill a good simple change with bike shedding here