summaryrefslogtreecommitdiff
path: root/doc/build/changelog/migration_11.rst
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2016-02-17 13:31:29 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2016-02-17 13:31:29 -0500
commit591e0cf08a798fb16e0ee9b56df5c3141aa48959 (patch)
treeff89657eba4af89f2c8b1b832e56adb839d480b7 /doc/build/changelog/migration_11.rst
parenta99a32d3d1669e1a66776b7e168119656e6aed02 (diff)
downloadsqlalchemy-591e0cf08a798fb16e0ee9b56df5c3141aa48959.tar.gz
- All string formatting of bound parameter sets and result rows for
logging, exception, and ``repr()`` purposes now truncate very large scalar values within each collection, including an "N characters truncated" notation, similar to how the display for large multiple-parameter sets are themselves truncated. fixes #2837
Diffstat (limited to 'doc/build/changelog/migration_11.rst')
-rw-r--r--doc/build/changelog/migration_11.rst39
1 files changed, 39 insertions, 0 deletions
diff --git a/doc/build/changelog/migration_11.rst b/doc/build/changelog/migration_11.rst
index 9ad99ae9f..8ed6ad6b5 100644
--- a/doc/build/changelog/migration_11.rst
+++ b/doc/build/changelog/migration_11.rst
@@ -883,6 +883,45 @@ this CHECK constraint can now be disabled using the new
:ticket:`3095`
+.. _change_2837:
+
+Large parameter and row values are now truncated in logging and exception displays
+----------------------------------------------------------------------------------
+
+A large value present as a bound parameter for a SQL statement, as well as a
+large value present in a result row, will now be truncated during display
+within logging, exception reporting, as well as ``repr()`` of the row itself::
+
+ >>> from sqlalchemy import create_engine
+ >>> import random
+ >>> e = create_engine("sqlite://", echo='debug')
+ >>> some_value = ''.join(chr(random.randint(52, 85)) for i in range(5000))
+ >>> row = e.execute("select ?", [some_value]).first()
+ ... (lines are wrapped for clarity) ...
+ 2016-02-17 13:23:03,027 INFO sqlalchemy.engine.base.Engine select ?
+ 2016-02-17 13:23:03,027 INFO sqlalchemy.engine.base.Engine
+ ('E6@?>9HPOJB<<BHR:@=TS:5ILU=;JLM<4?B9<S48PTNG9>:=TSTLA;9K;9FPM4M8M@;NM6GU
+ LUAEBT9QGHNHTHR5EP75@OER4?SKC;D:TFUMD:M>;C6U:JLM6R67GEK<A6@S@C@J7>4=4:P
+ GJ7HQ6 ... (4702 characters truncated) ... J6IK546AJMB4N6S9L;;9AKI;=RJP
+ HDSSOTNBUEEC9@Q:RCL:I@5?FO<9K>KJAGAO@E6@A7JI8O:J7B69T6<8;F:S;4BEIJS9HM
+ K:;5OLPM@JR;R:J6<SOTTT=>Q>7T@I::OTDC:CC<=NGP6C>BC8N',)
+ 2016-02-17 13:23:03,027 DEBUG sqlalchemy.engine.base.Engine Col ('?',)
+ 2016-02-17 13:23:03,027 DEBUG sqlalchemy.engine.base.Engine
+ Row (u'E6@?>9HPOJB<<BHR:@=TS:5ILU=;JLM<4?B9<S48PTNG9>:=TSTLA;9K;9FPM4M8M@;
+ NM6GULUAEBT9QGHNHTHR5EP75@OER4?SKC;D:TFUMD:M>;C6U:JLM6R67GEK<A6@S@C@J7
+ >4=4:PGJ7HQ ... (4703 characters truncated) ... J6IK546AJMB4N6S9L;;9AKI;=
+ RJPHDSSOTNBUEEC9@Q:RCL:I@5?FO<9K>KJAGAO@E6@A7JI8O:J7B69T6<8;F:S;4BEIJS9HM
+ K:;5OLPM@JR;R:J6<SOTTT=>Q>7T@I::OTDC:CC<=NGP6C>BC8N',)
+ >>> print row
+ (u'E6@?>9HPOJB<<BHR:@=TS:5ILU=;JLM<4?B9<S48PTNG9>:=TSTLA;9K;9FPM4M8M@;NM6
+ GULUAEBT9QGHNHTHR5EP75@OER4?SKC;D:TFUMD:M>;C6U:JLM6R67GEK<A6@S@C@J7>4
+ =4:PGJ7HQ ... (4703 characters truncated) ... J6IK546AJMB4N6S9L;;9AKI;
+ =RJPHDSSOTNBUEEC9@Q:RCL:I@5?FO<9K>KJAGAO@E6@A7JI8O:J7B69T6<8;F:S;4BEIJS9H
+ MK:;5OLPM@JR;R:J6<SOTTT=>Q>7T@I::OTDC:CC<=NGP6C>BC8N',)
+
+
+:ticket:`2837`
+
.. _change_2528:
A UNION or similar of SELECTs with LIMIT/OFFSET/ORDER BY now parenthesizes the embedded selects