| From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
|---|---|
| To: | hein(at)bitechsystems(dot)co(dot)za |
| Cc: | pgsql-bugs(at)postgresql(dot)org |
| Subject: | Re: BUG #13909: String concat error with CITEXT after 9.5.0 upgrade. |
| Date: | 2016-02-04 17:54:56 |
| Message-ID: | 22439.1454608496@sss.pgh.pa.us |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-bugs |
hein(at)bitechsystems(dot)co(dot)za writes:
> m_text = 'test' || isnull(m_text,''); --code breaks here!
ISNULL is a keyword, which I can't really recommend using as a function
name. This example used to accidentally fail to fail before 9.5 because
ISNULL was considered to bind tighter than ||. But now it binds less
tightly, meaning that the first part of the expression is parsed as
(('test' ||) IS NULL), which is not what you meant.
You could fix this with more parentheses:
m_text = 'test' || (isnull(m_text,''));
or by double-quoting the function name so it doesn't look like a keyword:
m_text = 'test' || "isnull"(m_text,'');
but you might be better advised to rename the function.
regards, tom lane
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2016-02-04 18:03:55 | Re: BUG #13911: pg_upgrade from 8.4 to 9.5 broken |
| Previous Message | dv | 2016-02-04 16:31:46 | BUG #13917: "upsert" construct doesn't work with partial index |