summaryrefslogtreecommitdiff
path: root/odoo/sql_db.py
diff options
context:
space:
mode:
authorOlivier Dony <odo@openerp.com>2017-06-13 17:21:03 +0200
committerOlivier Dony <odo@openerp.com>2017-06-15 16:23:35 +0200
commit4acfe3577b910e090bc67ad80982208cd660f8e5 (patch)
tree5b1ebd9457d94ab745df7656f7f5c2e62b45fedd /odoo/sql_db.py
parentacf7c1460afd169d0ab12155c68e0edd6abde027 (diff)
[FIX] sql_db: port fix from psycopg/psycopg2#459
NUL characters must not be used in query parameters, as they will be ignored by libpq, being end-of-string characters. Preventing NULs avoids unexpected results from queries. It is only necessary with psycopg2 versions before 2.7, which includes the upstream fix.
Diffstat (limited to 'odoo/sql_db.py')
-rw-r--r--odoo/sql_db.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/odoo/sql_db.py b/odoo/sql_db.py
index f2b200225a2..326ea44297f 100644
--- a/odoo/sql_db.py
+++ b/odoo/sql_db.py
@@ -47,6 +47,19 @@ psycopg2.extensions.register_type(psycopg2.extensions.new_type((700, 701, 1700,)
import tools
+
+from tools import parse_version as pv
+if pv(psycopg2.__version__) < pv('2.7'):
+ from psycopg2._psycopg import QuotedString
+ def adapt_string(adapted):
+ """Python implementation of psycopg/psycopg2#459 from v2.7"""
+ if '\x00' in adapted:
+ raise ValueError("A string literal cannot contain NUL (0x00) characters.")
+ return QuotedString(adapted)
+
+ psycopg2.extensions.register_adapter(str, adapt_string)
+ psycopg2.extensions.register_adapter(unicode, adapt_string)
+
from tools.func import frame_codeinfo
from datetime import timedelta
import threading