summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmjith Ramanujam <amjith.r@gmail.com>2015-02-04 18:32:50 -0800
committerAmjith Ramanujam <amjith.r@gmail.com>2015-02-04 18:32:50 -0800
commitb6cf4cb85593a1f878d44fe8257ca99b1bedccc7 (patch)
tree90340d9dd73f15d38a3dd582da16813a9efd54f7
parentd159f0d474ef993fc0d3604685bec77171c7d881 (diff)
Add completion for COPY command.
-rw-r--r--changelog.rst6
-rw-r--r--pgcli/packages/parseutils.py2
-rw-r--r--pgcli/packages/sqlcompletion.py6
-rw-r--r--pgcli/pgcompleter.py20
4 files changed, 20 insertions, 14 deletions
diff --git a/changelog.rst b/changelog.rst
index 484138d2..2ed0f56c 100644
--- a/changelog.rst
+++ b/changelog.rst
@@ -1,12 +1,16 @@
Current
=======
+Features:
+---------
+* Add syntax color styles to config.
+* Add auto-completion for COPY statements.
+
Bug Fixes:
----------
* Treat boolean values as strings instead of ints.
* Make \di, \dv and \dt to be schema aware. (Thanks: darikg_)
-
0.14.0
======
diff --git a/pgcli/packages/parseutils.py b/pgcli/packages/parseutils.py
index 4122a332..67cbffed 100644
--- a/pgcli/packages/parseutils.py
+++ b/pgcli/packages/parseutils.py
@@ -89,7 +89,7 @@ def extract_from_part(parsed, stop_at_punctuation=True):
else:
yield item
elif ((item.ttype is Keyword or item.ttype is Keyword.DML) and
- item.value.upper() in ('FROM', 'INTO', 'UPDATE', 'TABLE', 'JOIN',)):
+ item.value.upper() in ('COPY', 'FROM', 'INTO', 'UPDATE', 'TABLE', 'JOIN',)):
tbl_prefix_seen = True
# 'SELECT a, FROM abc' will detect FROM as part of the column list.
# So this check here is necessary.
diff --git a/pgcli/packages/sqlcompletion.py b/pgcli/packages/sqlcompletion.py
index 75d9f98d..8c0d5fdb 100644
--- a/pgcli/packages/sqlcompletion.py
+++ b/pgcli/packages/sqlcompletion.py
@@ -85,7 +85,8 @@ def suggest_based_on_last_token(token, text_before_cursor, full_text):
if p.token_first().value.lower() == 'select':
# If the lparen is preceeded by a space chances are we're about to
# do a sub-select.
- if last_word(text_before_cursor, 'all_punctuations').startswith('('):
+ if last_word(text_before_cursor,
+ 'all_punctuations').startswith('('):
return [{'type': 'keyword'}]
return [{'type': 'column', 'tables': extract_tables(full_text)}]
@@ -95,7 +96,8 @@ def suggest_based_on_last_token(token, text_before_cursor, full_text):
elif token_v.lower() in ('select', 'where', 'having'):
return [{'type': 'column', 'tables': extract_tables(full_text)},
{'type': 'function'}]
- elif token_v.lower() in ('from', 'update', 'into', 'describe', 'join', 'table'):
+ elif token_v.lower() in ('copy', 'from', 'update', 'into', 'describe',
+ 'join', 'table'):
return [{'type': 'schema'}, {'type': 'table', 'schema': []}]
elif token_v.lower() == 'on':
tables = extract_tables(full_text) # [(schema, table, alias), ...]
diff --git a/pgcli/pgcompleter.py b/pgcli/pgcompleter.py
index b8a37f56..95b8525c 100644
--- a/pgcli/pgcompleter.py
+++ b/pgcli/pgcompleter.py
@@ -11,19 +11,19 @@ _logger = logging.getLogger(__name__)
class PGCompleter(Completer):
keywords = ['ACCESS', 'ADD', 'ALL', 'ALTER TABLE', 'AND', 'ANY', 'AS',
'ASC', 'AUDIT', 'BETWEEN', 'BY', 'CASE', 'CHAR', 'CHECK',
- 'CLUSTER', 'COLUMN', 'COMMENT', 'COMPRESS', 'CONNECT', 'CREATE',
- 'CURRENT', 'DATE', 'DECIMAL', 'DEFAULT', 'DELETE FROM', 'DESC',
- 'DESCRIBE', 'DISTINCT', 'DROP', 'ELSE', 'EXCLUSIVE', 'EXISTS',
- 'FILE', 'FLOAT', 'FOR', 'FROM', 'FULL', 'GRANT', 'GROUP BY',
- 'HAVING', 'IDENTIFIED', 'IMMEDIATE', 'IN', 'INCREMENT', 'INDEX',
- 'INITIAL', 'INSERT INTO', 'INTEGER', 'INTERSECT', 'INTO', 'IS',
- 'JOIN', 'LEFT', 'LEVEL', 'LIKE', 'LIMIT', 'LOCK', 'LONG',
+ 'CLUSTER', 'COLUMN', 'COMMENT', 'COMPRESS', 'CONNECT', 'COPY',
+ 'CREATE', 'CURRENT', 'DATE', 'DECIMAL', 'DEFAULT', 'DELETE FROM',
+ 'DESC', 'DESCRIBE', 'DISTINCT', 'DROP', 'ELSE', 'EXCLUSIVE',
+ 'EXISTS', 'FILE', 'FLOAT', 'FOR', 'FROM', 'FULL', 'GRANT',
+ 'GROUP BY', 'HAVING', 'IDENTIFIED', 'IMMEDIATE', 'IN', 'INCREMENT',
+ 'INDEX', 'INITIAL', 'INSERT INTO', 'INTEGER', 'INTERSECT', 'INTO',
+ 'IS', 'JOIN', 'LEFT', 'LEVEL', 'LIKE', 'LIMIT', 'LOCK', 'LONG',
'MAXEXTENTS', 'MINUS', 'MLSLABEL', 'MODE', 'MODIFY', 'NOAUDIT',
'NOCOMPRESS', 'NOT', 'NOWAIT', 'NULL', 'NUMBER', 'OF', 'OFFLINE',
'ON', 'ONLINE', 'OPTION', 'OR', 'ORDER BY', 'OUTER', 'PCTFREE',
- 'PRIMARY', 'PRIOR', 'PRIVILEGES', 'RAW', 'RENAME',
- 'RESOURCE', 'REVOKE', 'RIGHT', 'ROW', 'ROWID', 'ROWNUM', 'ROWS',
- 'SELECT', 'SESSION', 'SET', 'SHARE', 'SIZE', 'SMALLINT', 'START',
+ 'PRIMARY', 'PRIOR', 'PRIVILEGES', 'RAW', 'RENAME', 'RESOURCE',
+ 'REVOKE', 'RIGHT', 'ROW', 'ROWID', 'ROWNUM', 'ROWS', 'SELECT',
+ 'SESSION', 'SET', 'SHARE', 'SIZE', 'SMALLINT', 'START',
'SUCCESSFUL', 'SYNONYM', 'SYSDATE', 'TABLE', 'THEN', 'TO',
'TRIGGER', 'UID', 'UNION', 'UNIQUE', 'UPDATE', 'USE', 'USER',
'VALIDATE', 'VALUES', 'VARCHAR', 'VARCHAR2', 'VIEW', 'WHEN',