Changes in python-sqlparse

Upcoming Deprecations

  • sqlparse.SQLParseError is deprecated (version 0.1.5), use sqlparse.exceptions.SQLParseError instead.

Changelog

Release 0.2.3 (Mar 02, 2017)

Enhancements

  • New command line option “–encoding” (by twang2218, pr317).

  • Support CONCURRENTLY keyword (issue322, by rowanseymour).

Bug Fixes

  • Fix some edge-cases when parsing invalid SQL statements.

  • Fix indentation of LIMIT (by romainr, issue320).

  • Fix parsing of INTO keyword (issue324).

Internal Changes

  • Several improvements regarding encodings.

Release 0.2.2 (Oct 22, 2016)

Enhancements

  • Add comma_first option: When splitting list “comma first” notation is used (issue141).

Bug Fixes

  • Fix parsing of incomplete AS (issue284, by vmuriart).

  • Fix parsing of Oracle names containing dollars (issue291).

  • Fix parsing of UNION ALL (issue294).

  • Fix grouping of identifiers containing typecasts (issue297).

  • Add Changelog to sdist again (issue302).

Internal Changes

  • is_whitespace and is_group changed into properties

Release 0.2.1 (Aug 13, 2016)

Notable Changes

  • PostgreSQL: Function bodys are parsed as literal string. Previously sqlparse assumed that all function bodys are parsable psql strings (see issue277).

Bug Fixes

  • Fix a regression to parse streams again (issue273, reported and test case by gmccreight).

  • Improve Python 2/3 compatibility when using parsestream (isseu190, by phdru).

  • Improve splitting of PostgreSQL functions (issue277).

Release 0.2.0 (Jul 20, 2016)

IMPORTANT: The supported Python versions have changed with this release. sqlparse 0.2.x supports Python 2.7 and Python >= 3.3.

Thanks to the many contributors for writing bug reports and working on pull requests who made this version possible!

Internal Changes

  • sqlparse.SQLParseError was removed from top-level module and moved to sqlparse.exceptions.

  • sqlparse.sql.Token.to_unicode was removed.

  • The signature of a filter’s process method has changed from process(stack, stream) -> to process(stream). Stack was never used at all.

  • Lots of code cleanups and modernization (thanks esp. to vmuriart!).

  • Improved grouping performance. (sjoerdjob)

Enhancements

  • Support WHILE loops (issue215, by shenlongxing).

  • Better support for CTEs (issue217, by Andrew Tipton).

  • Recognize USING as a keyword more consistently (issue236, by koljonen).

  • Improve alignment of columns (issue207, issue235, by vmuriat).

  • Add wrap_after option for better alignment when formatting lists (issue248, by Dennis Taylor).

  • Add reindent-aligned option for alternate formatting (Adam Greenhall)

  • Improved grouping of operations (issue211, by vmuriat).

Bug Fixes

  • Leading whitespaces are now removed when format() is called with strip_whitespace=True (issue213, by shenlongxing).

  • Fix typo in keywords list (issue229, by cbeloni).

  • Fix parsing of functions in comparisons (issue230, by saaj).

  • Fix grouping of identifiers (issue233).

  • Fix parsing of CREATE TABLE statements (issue242, by Tenghuan).

  • Minor bug fixes (issue101).

  • Improve formatting of CASE WHEN constructs (issue164, by vmuriat).

Release 0.1.19 (Mar 07, 2016)

Bug Fixes

  • Fix IndexError when statement contains WITH clauses (issue205).

Release 0.1.18 (Oct 25, 2015)

Bug Fixes

  • Remove universal wheel support, added in 0.1.17 by mistake.

Release 0.1.17 (Oct 24, 2015)

Enhancements

  • Speed up parsing of large SQL statements (pull request: issue201, fixes the following issues: issue199, issue135, issue62, issue41, by Ryan Wooden).

Bug Fixes

  • Fix another splitter bug regarding DECLARE (issue194).

Misc

  • Packages on PyPI are signed from now on.

Release 0.1.16 (Jul 26, 2015)

Bug Fixes

  • Fix a regression in get_alias() introduced in 0.1.15 (issue185).

  • Fix a bug in the splitter regarding DECLARE (issue193).

  • sqlformat command line tool doesn’t duplicat newlines anymore (issue191).

  • Don’t mix up MySQL comments starting with hash and MSSQL temp tables (issue192).

  • Statement.get_type() now ignores comments at the beginning of a statement (issue186).

Release 0.1.15 (Apr 15, 2015)

Bug Fixes

  • Fix a regression for identifiers with square bracktes notation (issue153, by darikg).

  • Add missing SQL types (issue154, issue155, issue156, by jukebox).

  • Fix parsing of multi-line comments (issue172, by JacekPliszka).

  • Fix parsing of escaped backslashes (issue174, by caseyching).

  • Fix parsing of identifiers starting with underscore (issue175).

  • Fix misinterpretation of IN keyword (issue183).

Enhancements

  • Improve formatting of HAVING statements.

  • Improve parsing of inline comments (issue163).

  • Group comments to parent object (issue128, issue160).

  • Add double precision builtin (issue169, by darikg).

  • Add support for square bracket array indexing (issue170, issue176, issue177 by darikg).

  • Improve grouping of aliased elements (issue167, by darikg).

  • Support comments starting with ‘#’ character (issue178).

Release 0.1.14 (Nov 30, 2014)

Bug Fixes

  • Floats in UPDATE statements are now handled correctly (issue145).

  • Properly handle string literals in comparisons (issue148, change proposed by aadis).

  • Fix indentation when using tabs (issue146).

Enhancements

  • Improved formatting in list when newlines precede commas (issue140).

Release 0.1.13 (Oct 09, 2014)

Bug Fixes

  • Fix a regression in handling of NULL keywords introduced in 0.1.12.

Release 0.1.12 (Sep 20, 2014)

Bug Fixes

  • Fix handling of NULL keywords in aliased identifiers.

  • Fix SerializerUnicode to split unquoted newlines (issue131, by Michael Schuller).

  • Fix handling of modulo operators without spaces (by gavinwahl).

Enhancements

  • Improve parsing of identifier lists containing placeholders.

  • Speed up query parsing of unquoted lines (by Michael Schuller).

Release 0.1.11 (Feb 07, 2014)

Bug Fixes

  • Fix incorrect parsing of string literals containing line breaks (issue118).

  • Fix typo in keywords, add MERGE, COLLECT keywords (issue122/124, by Cristian Orellana).

  • Improve parsing of string literals in columns.

  • Fix parsing and formatting of statements containing EXCEPT keyword.

  • Fix Function.get_parameters() (issue126/127, by spigwitmer).

Enhancements

  • Classify DML keywords (issue116, by Victor Hahn).

  • Add missing FOREACH keyword.

  • Grouping of BEGIN/END blocks.

Other

  • Python 2.5 isn’t automatically tested anymore, neither Travis nor Tox still support it out of the box.

Release 0.1.10 (Nov 02, 2013)

Bug Fixes

  • Removed buffered reading again, it obviously causes wrong parsing in some rare cases (issue114).

  • Fix regression in setup.py introduced 10 months ago (issue115).

Enhancements

  • Improved support for JOINs, by Alexander Beedie.

Release 0.1.9 (Sep 28, 2013)

Bug Fixes

  • Fix an regression introduced in 0.1.5 where sqlparse didn’t properly distinguished between single and double quoted strings when tagging identifier (issue111).

Enhancements

  • New option to truncate long string literals when formatting.

  • Scientific numbers are pares correctly (issue107).

  • Support for arithmetic expressions (issue109, issue106; by prudhvi).

Release 0.1.8 (Jun 29, 2013)

Bug Fixes

  • Whitespaces within certain keywords are now allowed (issue97, patch proposed by xcombelle).

Enhancements

  • Improve parsing of assignments in UPDATE statements (issue90).

  • Add STRAIGHT_JOIN statement (by Yago Riveiro).

  • Function.get_parameters() now returns the parameter if only one parameter is given (issue94, by wayne.wuw).

  • sqlparse.split() now removes leading and trailing whitespaces from splitted statements.

  • Add USE as keyword token (by mulos).

  • Improve parsing of PEP249-style placeholders (issue103).

Release 0.1.7 (Apr 06, 2013)

Bug Fixes

  • Fix Python 3 compatibility of sqlformat script (by Piet Delport).

  • Fix parsing of SQL statements that contain binary data (by Alexey Malyshev).

  • Fix a bug where keywords were identified as aliased identifiers in invalid SQL statements.

  • Fix parsing of identifier lists where identifiers are keywords too (issue10).

Enhancements

  • Top-level API functions now accept encoding keyword to parse statements in certain encodings more reliable (issue20).

  • Improve parsing speed when SQL contains CLOBs or BLOBs (issue86).

  • Improve formatting of ORDER BY clauses (issue89).

  • Formatter now tries to detect runaway indentations caused by parsing errors or invalid SQL statements. When re-indenting such statements the formatter flips back to column 0 before going crazy.

Other

  • Documentation updates.

Release 0.1.6 (Jan 01, 2013)

sqlparse is now compatible with Python 3 without any patches. The Python 3 version is generated during install by 2to3. You’ll need distribute to install sqlparse for Python 3.

Bug Fixes

  • Fix parsing error with dollar-quoted procedure bodies (issue83).

Other

  • Documentation updates.

  • Test suite now uses tox and py.test.

  • py3k fixes (by vthriller).

  • py3k fixes in setup.py (by Florian Bauer).

  • setup.py now requires distribute (by Florian Bauer).

Release 0.1.5 (Nov 13, 2012)

Bug Fixes

  • Improve handling of quoted identifiers (issue78).

  • Improve grouping and formatting of identifiers with operators (issue53).

  • Improve grouping and formatting of concatenated strings (issue53).

  • Improve handling of varchar() (by Mike Amy).

  • Clean up handling of various SQL elements.

  • Switch to py.test and clean up tests.

  • Several minor fixes.

Other

  • Deprecate sqlparse.SQLParseError. Please use sqlparse.exceptions.SQLParseError instead.

  • Add caching to speed up processing.

  • Add experimental filters for token processing.

  • Add sqlformat.parsestream (by quest).

Release 0.1.4 (Apr 20, 2012)

Bug Fixes

  • Avoid “stair case” effects when identifiers, functions, placeholders or keywords are mixed in identifier lists (issue45, issue49, issue52) and when asterisks are used as operators (issue58).

  • Make keyword detection more restrict (issue47).

  • Improve handling of CASE statements (issue46).

  • Fix statement splitting when parsing recursive statements (issue57, thanks to piranna).

  • Fix for negative numbers (issue56, thanks to kevinjqiu).

  • Pretty format comments in identifier lists (issue59).

  • Several minor bug fixes and improvements.

Release 0.1.3 (Jul 29, 2011)

Bug Fixes

  • Improve parsing of floats (thanks to Kris).

  • When formatting a statement a space before LIMIT was removed (issue35).

  • Fix strip_comments flag (issue38, reported by ooberm…@gmail.com).

  • Avoid parsing names as keywords (issue39, reported by djo…@taket.org).

  • Make sure identifier lists in subselects are grouped (issue40, reported by djo…@taket.org).

  • Split statements with IF as functions correctly (issue33 and issue29, reported by charles….@unige.ch).

  • Relax detection of keywords, esp. when used as function names (issue36, nyuhu…@gmail.com).

  • Don’t treat single characters as keywords (issue32).

  • Improve parsing of stand-alone comments (issue26).

  • Detection of placeholders in paramterized queries (issue22, reported by Glyph Lefkowitz).

  • Add parsing of MS Access column names with braces (issue27, reported by frankz…@gmail.com).

Other

  • Replace Django by Flask in App Engine frontend (issue11).

Release 0.1.2 (Nov 23, 2010)

Bug Fixes

  • Fixed incorrect detection of keyword fragments embed in names (issue7, reported and initial patch by andyboyko).

  • Stricter detection of identfier aliases (issue8, reported by estama).

  • WHERE grouping consumed closing parenthesis (issue9, reported by estama).

  • Fixed an issue with trailing whitespaces (reported by Kris).

  • Better detection of escaped single quotes (issue13, reported by Martin Brochhaus, patch by bluemaro with test case by Dan Carley).

  • Ignore identifier in double-quotes when changing cases (issue 21).

  • Lots of minor fixes targeting encoding, indentation, statement parsing and more (issues 12, 14, 15, 16, 18, 19).

  • Code cleanup with a pinch of refactoring.

Release 0.1.1 (May 6, 2009)

Bug Fixes

  • Lexers preserves original line breaks (issue1).

  • Improved identifier parsing: backtick quotes, wildcards, T-SQL variables prefixed with @.

  • Improved parsing of identifier lists (issue2).

  • Recursive recognition of AS (issue4) and CASE.

  • Improved support for UPDATE statements.

Other

  • Code cleanup and better test coverage.

Release 0.1.0 (Apr 8, 2009)

Initial release.