Thread: Quirks in Sorting Pg_description

Quirks in Sorting Pg_description

From
P
Date:
The following query works from Psql's prompt but not from Psql's "-c"
command or from PHP's PDO interface.

SELECT description FROM pg_catalog.pg_description WHERE description
SIMILAR TO '\d+' ORDER BY description::integer DESC LIMIT 1;

The result should be the description with the highest integer value.
Instead it appears to be sorting like text even though it has been cast
to an integer.

Anyone know of a workaround?

Re: Quirks in Sorting Pg_description

From
Tom Lane
Date:
P <user2037@live.com> writes:
> The following query works from Psql's prompt but not from Psql's "-c"
> command or from PHP's PDO interface.

> SELECT description FROM pg_catalog.pg_description WHERE description
> SIMILAR TO '\d+' ORDER BY description::integer DESC LIMIT 1;

1. I think you'll find that "SIMILAR TO '\d+'" doesn't do what you
think; or at least, if it does, that's an implementation artifact
not to be relied on.  Use a POSIX regex operator instead.

2. Perhaps the context sensitivity of the behavior is explained by the
shell or PHP eating the backslash?  It certainly seems like you're at
risk for different numbers of levels of backslash processing in these
cases.

            regards, tom lane