summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* This is 0.2.1.0.2.1Andi Albrecht2016-08-132-3/+3
|
* Parse double dollars (PostgreSQL) as literal strings (fixes #277).Andi Albrecht2016-08-136-5/+56
|
* Don't rely on line breaks in tests.Andi Albrecht2016-08-132-2/+2
|
* Pipe command line args to py.testAndi Albrecht2016-08-131-1/+1
|
* Move file_types list to compat module.Andi Albrecht2016-08-102-9/+6
|
* Update Changelog.Andi Albrecht2016-08-101-0/+2
|
* Merge pull request #279 from phdru/issue-190Vik2016-08-053-2/+15
|\ | | | | closes #190
| * Fix a bug: recognize file (Python 2) as a streamOleg Broytman2016-08-062-1/+14
| |
| * Ignore *.pyo byte code filesOleg Broytman2016-08-051-1/+1
| |
* | Merge pull request #280 from phdru/quotesVik2016-08-052-2/+17
|\ \ | |/ |/| Avoid double apostrophes
| * Avoid double apostrophesOleg Broytman2016-08-062-2/+17
|/ | | | | | | | If the value is Single it's already quoted with apostrophes. Avoid double apostrophes it that case by using double-quotes instead. For example, if the value is 'value' the output is "'value'" instead of ''value''.
* Add missing documentation (fixes #275).Andi Albrecht2016-07-231-0/+3
|
* Fix parsing of streams (fixes #273).Andi Albrecht2016-07-222-2/+7
|
* Merge pull request #274 from gmccreight/masterAndi Albrecht2016-07-223-0/+16
|\ | | | | Failing test: stream worked in 0.1.19
| * Failing test: stream worked in 0.1.19Gordon McCreight2016-07-213-0/+16
|/
* Switch back to development version.Andi Albrecht2016-07-202-1/+7
|
* Bump version to 0.2.0.0.2.0Andi Albrecht2016-07-202-3/+3
|
* Update changelog.Andi Albrecht2016-07-201-0/+3
|
* Cleanup: Don't redefine underscore.Andi Albrecht2016-07-201-1/+1
|
* Format keywords.pyVictor Uriarte2016-06-281-2/+4
|
* Merge pull request #269 from dlenski/oracle-11g-keywordsVik2016-06-281-1/+134
|\ | | | | add all Oracle 11g reserved words that aren't already in sqlparse.keywords
| * add all Oracle 11g NON-RESERVED keywords (in a separate dict, as @vmuriart ↵Dan Lenski2016-06-281-1/+106
| | | | | | | | suggested)
| * I think ROWID, ROWLABEL, ROWNUM, and SYSDATE should be classified as ↵Dan Lenski2016-06-261-4/+4
| | | | | | | | Name.Builtin rather than Keyword, since they are identifier-like
| * add all Oracle 11g reserved words that aren't already in sqlparse.keywordsDan Lenski2016-06-261-0/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Oracle has at least three categories of keywords: 1. reserved words (can't be used in unquoted identifiers) 2. "non-reserved" keywords (which have a specific syntactic meaning, but which *can* be used in unquoted identifiers… which is insane) 3. reserved words which are specific to PL/SQL (so probably shouldn't be considered special by sqlparse) This PR adds everything from #1 which sqlparse didn't already include. Some of these are used in other SQL databases as well (e.g. SYNONYM, ENABLE, DISABLE) while most are Oracle-specific. I referred to the Oracle 11g docs for these lists: http://docs.oracle.com/cd/B28359_01/appdev.111/b31231/appb.htm#BABGHAFH And I used the following script to find the ones that were missing from sqlparse: import sqlparse import textwrap # Oracle 11g reserved words: http://docs.oracle.com/cd/B28359_01/appdev.111/b31231/appb.htm#BABGHAFH reserved = { 'ACCESS', 'ELSE', 'MODIFY', 'START', 'ADD', 'EXCLUSIVE', 'NOAUDIT', 'SELECT', 'ALL', 'EXISTS', 'NOCOMPRESS', 'SESSION', 'ALTER', 'FILE', 'NOT', 'SET', 'AND', 'FLOAT', 'NOTFOUND', 'SHARE', 'ANY', 'FOR', 'NOWAIT', 'SIZE', 'ARRAYLEN', 'FROM', 'NULL', 'SMALLINT', 'AS', 'GRANT', 'NUMBER', 'SQLBUF', 'ASC', 'GROUP', 'OF', 'SUCCESSFUL', 'AUDIT', 'HAVING', 'OFFLINE', 'SYNONYM', 'BETWEEN', 'IDENTIFIED', 'ON', 'SYSDATE', 'BY', 'IMMEDIATE', 'ONLINE', 'TABLE', 'CHAR', 'IN', 'OPTION', 'THEN', 'CHECK', 'INCREMENT', 'OR', 'TO', 'CLUSTER', 'INDEX', 'ORDER', 'TRIGGER', 'COLUMN', 'INITIAL', 'PCTFREE', 'UID', 'COMMENT', 'INSERT', 'PRIOR', 'UNION', 'COMPRESS', 'INTEGER', 'PRIVILEGES', 'UNIQUE', 'CONNECT', 'INTERSECT', 'PUBLIC', 'UPDATE', 'CREATE', 'INTO', 'RAW', 'USER', 'CURRENT', 'IS', 'RENAME', 'VALIDATE', 'DATE', 'LEVEL', 'RESOURCE', 'VALUES', 'DECIMAL', 'LIKE', 'REVOKE', 'VARCHAR', 'DEFAULT', 'LOCK', 'ROW', 'VARCHAR2', 'DELETE', 'LONG', 'ROWID', 'VIEW', 'DESC', 'MAXEXTENTS', 'ROWLABEL', 'WHENEVER', 'DISTINCT', 'MINUS', 'ROWNUM', 'WHERE', 'DROP', 'MODE', 'ROWS', 'WITH', } # Oracle 11g "non-reserved" keywords (don't blame me, I didn't come up with this insane concept): # http://docs.oracle.com/cd/B28359_01/appdev.111/b31231/appb.htm#BABHJHFE keywords = { 'ADMIN', 'CURSOR', 'FOUND', 'MOUNT', 'AFTER', 'CYCLE', 'FUNCTION', 'NEXT', 'ALLOCATE', 'DATABASE', 'GO', 'NEW', 'ANALYZE', 'DATAFILE', 'GOTO', 'NOARCHIVELOG', 'ARCHIVE', 'DBA', 'GROUPS', 'NOCACHE', 'ARCHIVELOG', 'DEC', 'INCLUDING', 'NOCYCLE', 'AUTHORIZATION', 'DECLARE', 'INDICATOR', 'NOMAXVALUE', 'AVG', 'DISABLE', 'INITRANS', 'NOMINVALUE', 'BACKUP', 'DISMOUNT', 'INSTANCE', 'NONE', 'BEGIN', 'DOUBLE', 'INT', 'NOORDER', 'BECOME', 'DUMP', 'KEY', 'NORESETLOGS', 'BEFORE', 'EACH', 'LANGUAGE', 'NORMAL', 'BLOCK', 'ENABLE', 'LAYER', 'NOSORT', 'BODY', 'END', 'LINK', 'NUMERIC', 'CACHE', 'ESCAPE', 'LISTS', 'OFF', 'CANCEL', 'EVENTS', 'LOGFILE', 'OLD', 'CASCADE', 'EXCEPT', 'MANAGE', 'ONLY', 'CHANGE', 'EXCEPTIONS', 'MANUAL', 'OPEN', 'CHARACTER', 'EXEC', 'MAX', 'OPTIMAL', 'CHECKPOINT', 'EXPLAIN', 'MAXDATAFILES', 'OWN', 'CLOSE', 'EXECUTE', 'MAXINSTANCES', 'PACKAGE', 'COBOL', 'EXTENT', 'MAXLOGFILES', 'PARALLEL', 'COMMIT', 'EXTERNALLY', 'MAXLOGHISTORY', 'PCTINCREASE', 'COMPILE', 'FETCH', 'MAXLOGMEMBERS', 'PCTUSED', 'CONSTRAINT', 'FLUSH', 'MAXTRANS', 'PLAN', 'CONSTRAINTS', 'FREELIST', 'MAXVALUE', 'PLI', 'CONTENTS', 'FREELISTS', 'MIN', 'PRECISION', 'CONTINUE', 'FORCE', 'MINEXTENTS', 'PRIMARY', 'CONTROLFILE', 'FOREIGN', 'MINVALUE', 'PRIVATE', 'COUNT', 'FORTRAN', 'MODULE', 'PROCEDURE', 'PROFILE', 'SAVEPOINT', 'SQLSTATE', 'TRACING', 'QUOTA', 'SCHEMA', 'STATEMENT_ID', 'TRANSACTION', 'READ', 'SCN', 'STATISTICS', 'TRIGGERS', 'REAL', 'SECTION', 'STOP', 'TRUNCATE', 'RECOVER', 'SEGMENT', 'STORAGE', 'UNDER', 'REFERENCES', 'SEQUENCE', 'SUM', 'UNLIMITED', 'REFERENCING', 'SHARED', 'SWITCH', 'UNTIL', 'RESETLOGS', 'SNAPSHOT', 'SYSTEM', 'USE', 'RESTRICTED', 'SOME', 'TABLES', 'USING', 'REUSE', 'SORT', 'TABLESPACE', 'WHEN', 'ROLE', 'SQL', 'TEMPORARY', 'WRITE', 'ROLES', 'SQLCODE', 'THREAD', 'WORK', 'ROLLBACK', 'SQLERROR', 'TIME' } # Oracle 11g reserved words for PL/SQL only: # http://docs.oracle.com/cd/B28359_01/appdev.111/b31231/appb.htm#BABDFFBA plsql_reserved = { 'ABORT', 'BETWEEN', 'CRASH', 'DIGITS', 'ACCEPT', 'BINARY_INTEGER', 'CREATE', 'DISPOSE', 'ACCESS', 'BODY', 'CURRENT', 'DISTINCT', 'ADD', 'BOOLEAN', 'CURRVAL', 'DO', 'ALL', 'BY', 'CURSOR', 'DROP', 'ALTER', 'CASE', 'DATABASE', 'ELSE', 'AND', 'CHAR', 'DATA_BASE', 'ELSIF', 'ANY', 'CHAR_BASE', 'DATE', 'END', 'ARRAY', 'CHECK', 'DBA', 'ENTRY', 'ARRAYLEN', 'CLOSE', 'DEBUGOFF', 'EXCEPTION', 'AS', 'CLUSTER', 'DEBUGON', 'EXCEPTION_INIT', 'ASC', 'CLUSTERS', 'DECLARE', 'EXISTS', 'ASSERT', 'COLAUTH', 'DECIMAL', 'EXIT', 'ASSIGN', 'COLUMNS', 'DEFAULT', 'FALSE', 'AT', 'COMMIT', 'DEFINITION', 'FETCH', 'AUTHORIZATION', 'COMPRESS', 'DELAY', 'FLOAT', 'AVG', 'CONNECT', 'DELETE', 'FOR', 'BASE_TABLE', 'CONSTANT', 'DELTA', 'FORM', 'BEGIN', 'COUNT', 'DESC', 'FROM', 'FUNCTION', 'NEW', 'RELEASE', 'SUM', 'GENERIC', 'NEXTVAL', 'REMR', 'TABAUTH', 'GOTO', 'NOCOMPRESS', 'RENAME', 'TABLE', 'GRANT', 'NOT', 'RESOURCE', 'TABLES', 'GROUP', 'NULL', 'RETURN', 'TASK', 'HAVING', 'NUMBER', 'REVERSE', 'TERMINATE', 'IDENTIFIED', 'NUMBER_BASE', 'REVOKE', 'THEN', 'IF', 'OF', 'ROLLBACK', 'TO', 'IN', 'ON', 'ROWID', 'TRUE', 'INDEX', 'OPEN', 'ROWLABEL', 'TYPE', 'INDEXES', 'OPTION', 'ROWNUM', 'UNION', 'INDICATOR', 'OR', 'ROWTYPE', 'UNIQUE', 'INSERT', 'ORDER', 'RUN', 'UPDATE', 'INTEGER', 'OTHERS', 'SAVEPOINT', 'USE', 'INTERSECT', 'OUT', 'SCHEMA', 'VALUES', 'INTO', 'PACKAGE', 'SELECT', 'VARCHAR', 'IS', 'PARTITION', 'SEPARATE', 'VARCHAR2', 'LEVEL', 'PCTFREE', 'SET', 'VARIANCE', 'LIKE', 'POSITIVE', 'SIZE', 'VIEW', 'LIMITED', 'PRAGMA', 'SMALLINT', 'VIEWS', 'LOOP', 'PRIOR', 'SPACE', 'WHEN', 'MAX', 'PRIVATE', 'SQL', 'WHERE', 'MIN', 'PROCEDURE', 'SQLCODE', 'WHILE', 'MINUS', 'PUBLIC', 'SQLERRM', 'WITH', 'MLSLABEL', 'RAISE', 'START', 'WORK', 'MOD', 'RANGE', 'STATEMENT', 'XOR', 'MODE', 'REAL', 'STDDEV', 'NATURAL', 'RECORD', 'SUBTYPE' } - reserved for batch, name in ((reserved, 'Oracle 11g reserved words'), (keywords, 'Oracle 11g "non-reserved" keywords'), (plsql_reserved, 'Oracle 11g reserved words for PL/SQL only'),): missing = batch - set(sqlparse.keywords.KEYWORDS) - set(sqlparse.keywords.KEYWORDS_COMMON) if missing: print("{} out of {} {} are missing from sqlparse.keywords.KEYWORDS (v{}):".format(len(missing), len(batch), name, sqlparse.__version__)) print(textwrap.fill(repr(missing), initial_indent=' ', subsequent_indent=' ')) else: print("All {} {} are in from sqlparse.keywords.KEYWORDS (v{}).".format(len(batch), name, sqlparse.__version__))
* | Merge pull request #268 from darikg/returningVik2016-06-252-1/+9
|\ \ | | | | | | Returning clause ends where clause
| * | Returning clause ends where clauseDarik Gamble2016-06-252-1/+9
|/ /
* | Merge pull request #267 from darikg/returningVik2016-06-251-0/+1
|\ \ | | | | | | Add RETURNING keyword
| * | Add RETURNING keywordDarik Gamble2016-06-241-0/+1
|/ /
* | Merge pull request #263 from vmuriart/clean-testsVik2016-06-2310-1361/+1367
|\ \ | | | | | | Clean-up tests. Fully migrate to Py.test
| * | Format cli.py and add cli-testsVictor Uriarte2016-06-202-7/+42
| | |
| * | Split test/asserts that are weakly relatedVictor Uriarte2016-06-201-8/+22
| | |
| * | Parametrize testsVictor Uriarte2016-06-205-153/+70
| | | | | | | | | | | | | | | | | | Allows for tests to continue if the first assert had failed. In particular useful when certain change is dealing with two almost opposing edge cases.
| * | Remove some test classes and clean-upVictor Uriarte2016-06-206-1024/+1102
| | |
| * | Replace tests/utils with conftest.pyVictor Uriarte2016-06-205-35/+55
| | | | | | | | | | | | http://stackoverflow.com/questions/34466027/what-is-the-use-of-conftest-py
| * | Replace other UnitTest with Py.TestVictor Uriarte2016-06-208-462/+441
| | |
| * | Replace ndiffAssertEqual with Py.TestVictor Uriarte2016-06-206-314/+277
|/ /
* | Merge pull request #265 from darikg/dont-ignore-skip_cmVictor Uriarte2016-06-202-19/+13
|\ \
| * | token_next shouldn't ignore skip_cmDarik Gamble2016-06-202-19/+13
| | |
* | | Merge pull request #264 from julienbaley/patch-1Vik2016-06-201-1/+1
|\ \ \ | |/ / |/| | Fix release date of 0.1.19
| * | Fix release date of 0.1.19Julien Baley2016-06-201-1/+1
|/ /
* | Previous fix for period failed when another token (non-groupable) followed.Victor Uriarte2016-06-192-3/+17
| |
* | Revert behavior of dangling period(hanging schema qualifier)Victor Uriarte2016-06-182-5/+5
| | | | | | | | | | | | Related to #261. Reverting to previous behavior until a way to handle behavior/grouping of invalid sql is agreed upon.
* | Misc. small code clean-up/commentsVictor Uriarte2016-06-183-4/+4
| |
* | Merge pull request #260 from vmuriart/long_live_indexesVik2016-06-1612-318/+424
|\ \ | | | | | | Long live indexes - Improve performance
| * | Update AUTHORS and CHANGELOGVictor Uriarte2016-06-152-0/+2
| | |
| * | Change group_matching back to idxVictor Uriarte2016-06-151-6/+16
| | |
| * | remove group left_rightVictor Uriarte2016-06-151-27/+0
| | |
| * | Change grouping from _left_right to _groupVictor Uriarte2016-06-151-18/+71
| | |
| * | remove extra recurse and rename varsVictor Uriarte2016-06-151-30/+43
| | | | | | | | | | | | | | | # Conflicts: # sqlparse/engine/grouping.py
| * | Refactor _group's prev token logicVictor Uriarte2016-06-151-13/+11
| | |