diff options
| author | Olivier Dony <odo@openerp.com> | 2017-06-13 17:21:03 +0200 |
|---|---|---|
| committer | Olivier Dony <odo@openerp.com> | 2017-06-15 16:23:35 +0200 |
| commit | 4acfe3577b910e090bc67ad80982208cd660f8e5 (patch) | |
| tree | 5b1ebd9457d94ab745df7656f7f5c2e62b45fedd /odoo/sql_db.py | |
| parent | acf7c1460afd169d0ab12155c68e0edd6abde027 (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.py | 13 |
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 |
