Hi,

First, some background:

psql (9.2.4)
Type "help" for help.

somedb=# create table a(a varchar(5));
CREATE TABLE
somedb=# insert into a values (E'\\');
INSERT 0 1
somedb=# select * from a where a = '\';
 a
---
 \
(1 row)

somedb=# select * from a where a like '\';
ERROR:  LIKE pattern must not end with escape character
somedb=# select * from a where a like '\\';
 a
---
 \
(1 row)

somedb=# select * from a where a like E'\\\\';
 a
---
 \
(1 row)

Here's the relevant part of the documentation:

http://www.postgresql.org/docs/9.2/static/functions-matching.html
Section 9.7.1

So I guess we can safely say that it's a known and documented behaviour
and won't be considered to be a bug by the postgres team.

http://www.postgresql.org/docs/9.1/static/release-9-1.html Section
E.10.2.1 could also be slightly (as it says nothing about LIKE) relevant.

Here's what happens with sqlalchemy:

Python 3.3.2 (default, May 23 2013, 10:38:22)
[GCC 4.6.3] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlalchemy
>>> sqlalchemy.__version__
'0.8.1'
>>> from sqlalchemy import MetaData, create_engine
>>> e = create_engine("postgres://postgres:@localhost:5432/somedb")
>>> meta = MetaData(bind=e)
>>> meta.reflect()
>>> t=meta.tables['a']
>>> e.execute(t.select(t.c.a.like('\\')))
Traceback (most recent call last):
  File
"/home/plq/.local/lib64/python3.3/site-packages/SQLAlchemy-0.8.1-py3.3.egg/sqlalchemy/engine/base.py",
line 867, in _execute_context
    context)
  File
"/home/plq/.local/lib64/python3.3/site-packages/SQLAlchemy-0.8.1-py3.3.egg/sqlalchemy/engine/default.py",
line 326, in do_execute
    cursor.execute(statement, parameters)
psycopg2.DataError: LIKE pattern must not end with escape character


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File
"/home/plq/.local/lib64/python3.3/site-packages/SQLAlchemy-0.8.1-py3.3.egg/sqlalchemy/engine/base.py",
line 1614, in execute
    return connection.execute(statement, *multiparams, **params)
  File
"/home/plq/.local/lib64/python3.3/site-packages/SQLAlchemy-0.8.1-py3.3.egg/sqlalchemy/engine/base.py",
line 662, in execute
    params)
  File
"/home/plq/.local/lib64/python3.3/site-packages/SQLAlchemy-0.8.1-py3.3.egg/sqlalchemy/engine/base.py",
line 761, in _execute_clauseelement
    compiled_sql, distilled_params
  File
"/home/plq/.local/lib64/python3.3/site-packages/SQLAlchemy-0.8.1-py3.3.egg/sqlalchemy/engine/base.py",
line 874, in _execute_context
    context)
  File
"/home/plq/.local/lib64/python3.3/site-packages/SQLAlchemy-0.8.1-py3.3.egg/sqlalchemy/engine/base.py",
line 1024, in _handle_dbapi_exception
    exc_info
  File
"/home/plq/.local/lib64/python3.3/site-packages/SQLAlchemy-0.8.1-py3.3.egg/sqlalchemy/util/compat.py",
line 155, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=exc_value)
  File
"/home/plq/.local/lib64/python3.3/site-packages/SQLAlchemy-0.8.1-py3.3.egg/sqlalchemy/util/compat.py",
line 150, in reraise
    raise value.with_traceback(tb)
  File
"/home/plq/.local/lib64/python3.3/site-packages/SQLAlchemy-0.8.1-py3.3.egg/sqlalchemy/engine/base.py",
line 867, in _execute_context
    context)
  File
"/home/plq/.local/lib64/python3.3/site-packages/SQLAlchemy-0.8.1-py3.3.egg/sqlalchemy/engine/default.py",
line 326, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.DataError: (DataError) LIKE pattern must not end with
escape character
 'SELECT a.a \nFROM a \nWHERE a.a LIKE %(a_1)s' {'a_1': '\\'}
>>>

Anything else I can do to help?

Best,
Burak

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to