On Mon, Jan 30, 2017 at 6:18 PM, Dave Page <dpage@pgadmin.org> wrote:
On Fri, Jan 27, 2017 at 10:32 AM, Surinder Kumar <surinder.kumar@enterprisedb.com> wrote: > Hi Dave, > > Please find updated patch. > > On Mon, Jan 16, 2017 at 10:01 PM, Dave Page <dpage@pgadmin.org> wrote: >> >> Hi >> >> On Fri, Jan 13, 2017 at 9:24 AM, Surinder Kumar >> <surinder.kumar@enterprisedb.com> wrote: >> > Hi >> > >> > Please find attached patch and review. >> > >> > On Sun, Jan 8, 2017 at 3:27 PM, Dave Page <dpage@pgadmin.org> wrote: >> >> >> >> Hi >> >> >> >> On Friday, December 23, 2016, Surinder Kumar >> >> <surinder.kumar@enterprisedb.com> wrote: >> >>> >> >>> Forgot to attach patch in last thread. please find patch. >> >> >> >> >> >> It looks good for the most part, except: >> >> >> >> 1) You missed the part we discussed about being able to set a value to >> >> '' >> >> (the literal string containing two single quotes) by entering \'\' (and >> >> of >> >> course, the follow-on cases to allow setting a value to \'\' by >> >> entering >> >> \\'\\' etc). >> > >> > Fixed. >> >> That doesn't seem right to me - the code you've written looks like >> it'll try to escape anything for use in a string literal, not just >> '\'\ or \\'\\' etc. > > Now the implementation is that It will find and unescape the string literals > like '\'\ or \\'\\' etc.
I ran some tests:
- Setting a field to '' resulted in the following SQL:
UPDATE public.emp SET job = '''''' WHERE empno = 7369;
- Setting a field to \"\" resulted in the following SQL:
UPDATE public.emp SET job = '""' WHERE empno = 7499;
- Setting a field to \'\' displayed \'\' in the grid until refreshed when the value vanished. The SQL it ran was:
In current behaviour, we are saving the value provided by user and we are not refreshing the grid with new values.
Should we do refresh along with save?
UPDATE public.emp SET job = '''''' WHERE empno = 7499;
To be clear, here's what I'm expecting:
Input: <empty> Display: [null] SQL: UPDATE t SET c = NULL WHERE k = <val>
Input: '' Display: SQL: UPDATE t SET c = '' WHERE k = <val>
Input: \'\' Display: '' SQL: UPDATE t SET c = '''''' WHERE k = <val>
Input: \\'\\' Display: \'\' SQL: UPDATE t SET c = '\''\''' WHERE k = <val>