From 212ca01506f02d62bedc37d5c6af8f209b7486cc Mon Sep 17 00:00:00 2001 From: Akshay Joshi Date: Fri, 22 Mar 2019 15:54:34 +0000 Subject: [PATCH] Ensure sequences can be created with increment, start, minimum and maximum options set. Fixes #4100 --- docs/en_US/release_notes_4_4.rst | 3 ++- .../databases/schemas/sequences/__init__.py | 15 ++++++++++----- .../templates/sequence/sql/default/create.sql | 14 +++++++------- .../sequences/tests/test_sequence_add.py | 17 ----------------- 4 files changed, 19 insertions(+), 30 deletions(-) diff --git a/docs/en_US/release_notes_4_4.rst b/docs/en_US/release_notes_4_4.rst index 61b240501..895f7e206 100644 --- a/docs/en_US/release_notes_4_4.rst +++ b/docs/en_US/release_notes_4_4.rst @@ -54,4 +54,5 @@ Bug fixes | `Bug #4073 `_ - Change the CodeMirror active line background colour to $color-danger-lighter so it doesn't conflict with the selection colour. | `Bug #4081 `_ - Fix the RE-SQL syntax for roles with a VALID UNTIL clause. | `Bug #4090 `_ - Improve the German translation for Backup Server. -| `Bug #4099 `_ - Fix SQL help for EPAS 10+, and refactor the URL generation code into a testable function. \ No newline at end of file +| `Bug #4099 `_ - Fix SQL help for EPAS 10+, and refactor the URL generation code into a testable function. +| `Bug #4100 `_ - Ensure sequences can be created with increment, start, minimum and maximum options set. \ No newline at end of file diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/__init__.py index c0ea80c0f..d621dc0be 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/__init__.py @@ -349,11 +349,16 @@ class SequenceView(PGChildNodeView): "Could not find the required parameter (%s)." % arg ) ) - # The SQL below will execute CREATE DDL only - SQL = render_template( - "/".join([self.template_path, 'create.sql']), - data=data, conn=self.conn - ) + + try: + # The SQL below will execute CREATE DDL only + SQL = render_template( + "/".join([self.template_path, 'create.sql']), + data=data, conn=self.conn + ) + except Exception as e: + return internal_server_error(errormsg=e) + status, msg = self.conn.execute_scalar(SQL) if not status: return internal_server_error(errormsg=msg) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequence/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequence/sql/default/create.sql index e58507a94..446559900 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequence/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequence/sql/default/create.sql @@ -1,16 +1,16 @@ CREATE SEQUENCE {{ conn|qtIdent(data.schema, data.name) }}{% if data.increment is defined and data.cycled %} - CYCLE{% endif %}{% if data.increment is defined and data.increment is number %} + CYCLE{% endif %}{% if data.increment is defined %} - INCREMENT {{data.increment}}{% endif %}{% if data.start is defined and data.start is number %} + INCREMENT {{data.increment|int}}{% endif %}{% if data.start is defined %} - START {{data.start}}{% elif data.current_value is defined and data.current_value is number %} + START {{data.start|int}}{% elif data.current_value is defined %} - START {{data.current_value}}{% endif %}{% if data.minimum is defined and data.minimum is number %} + START {{data.current_value|int}}{% endif %}{% if data.minimum is defined %} - MINVALUE {{data.minimum}}{% endif %}{% if data.maximum is defined and data.maximum is number %} + MINVALUE {{data.minimum|int}}{% endif %}{% if data.maximum is defined %} - MAXVALUE {{data.maximum}}{% endif %}{% if data.cache is defined and data.cache is number %} + MAXVALUE {{data.maximum|int}}{% endif %}{% if data.cache is defined %} - CACHE {{data.cache}}{% endif %}; + CACHE {{data.cache|int}}{% endif %}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_add.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_add.py index 733e5da73..2665c3eb3 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_add.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_add.py @@ -40,23 +40,6 @@ class SequenceAddTestCase(BaseTestGenerator): "start": "100" } ) - ), - ( - 'Fetch sequence Node URL (invalid optional data)', - dict( - url='/browser/sequence/obj/', - # Optional fields should be int but we are passing empty str - data={ - "cache": "", - "cycled": False, - "increment": "", - "maximum": "", - "minimum": "", - "name": "test_sequence_add_%s" % (str(uuid.uuid4())[1:8]), - "securities": [], - "start": "" - } - ) ) ]