Thread: Column mis-spelling hints vs case folding
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
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
<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