| From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> | 
|---|---|
| To: | Dagfinn Ilmari Mannsåker <ilmari(at)ilmari(dot)org> | 
| Cc: | "tanghy(dot)fnst(at)fujitsu(dot)com" <tanghy(dot)fnst(at)fujitsu(dot)com>, Peter Eisentraut <peter(dot)eisentraut(at)enterprisedb(dot)com>, Japin Li <japinli(at)hotmail(dot)com>, Kyotaro Horiguchi <horikyota(dot)ntt(at)gmail(dot)com>, Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>, "smithpb2250(at)gmail(dot)com" <smithpb2250(at)gmail(dot)com>, "david(dot)zhang(at)highgo(dot)ca" <david(dot)zhang(at)highgo(dot)ca>, "pgsql-hackers(at)lists(dot)postgresql(dot)org" <pgsql-hackers(at)lists(dot)postgresql(dot)org> | 
| Subject: | Re: Support tab completion for upper character inputs in psql | 
| Date: | 2022-01-31 01:54:57 | 
| Message-ID: | 534641.1643594097@sss.pgh.pa.us | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-hackers | 
=?utf-8?Q?Dagfinn_Ilmari_Manns=C3=A5ker?= <ilmari(at)ilmari(dot)org> writes:
> First, as noted in the test, it doesn't preserve the case of the input
> for keywords appended to the query result.  This is easily fixed by
> using `pg_strdup_keyword_case()`, per the first attached patch.
I thought about that, and intentionally didn't do it, because it
would also affect the menus produced by tab completion.  Currently,
keywords are (usually) visually distinct from non-keywords in those
menus, thanks to being upper-case where the object names usually
aren't:
regression=# create table foo (c1 int, c2 int);            
CREATE TABLE
regression=# alter table foo rename c<TAB>
c1          c2          COLUMN      CONSTRAINT  
With this change, the keywords would be visually indistinguishable
from the object names, which I felt wouldn't be a net improvement.
We could do something hacky like matching case only when there's
no longer any matching object names, but that might be too magic.
> The second might be more of a matter of style or opinion, but I noticed
> a bunch of `if (foo) free(foo);`, which is redundant given that
> `free(NULL)` is a no-op.  To simplify the code further, I also made
> `escape_string(NULL)` be a no-op, returning `NULL`.
Yeah.  Our fairly longstanding convention is to avoid doing
free(NULL), dating back to when some platforms would crash on it.
I realize that's archaic now, but I'm not inclined to change
it in just some places.
regards, tom lane
| From | Date | Subject | |
|---|---|---|---|
| Next Message | houzj.fnst@fujitsu.com | 2022-01-31 01:57:33 | RE: row filtering for logical replication | 
| Previous Message | Kyotaro Horiguchi | 2022-01-31 01:50:45 | Re: Is there a way (except from server logs) to know the kind of on-going/last checkpoint? |