Added unlogged option while creating a sequence. #6376
parent
a460644ae8
commit
5c2d242ff8
Binary file not shown.
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 122 KiB |
|
@ -52,10 +52,12 @@ Use the fields in the *Definition* tab to define the sequence:
|
||||||
to be preallocated and stored in memory for faster access. The minimum value
|
to be preallocated and stored in memory for faster access. The minimum value
|
||||||
is 1 (only one value can be generated at a time, i.e., no cache), and this is
|
is 1 (only one value can be generated at a time, i.e., no cache), and this is
|
||||||
also the default.
|
also the default.
|
||||||
* Move the *Cycled* switch to the *Yes* position to allow the sequence to wrap
|
* Move the switch next to *Cycled* towards the *right position* to allow the sequence to wrap
|
||||||
around when the MAXVALUE or the MINVALUE has been reached by an ascending or
|
around when the MAXVALUE or the MINVALUE has been reached by an ascending or
|
||||||
descending sequence respectively. If the limit is reached, the next number
|
descending sequence respectively. If the limit is reached, the next number
|
||||||
generated will be the MINVALUE or MAXVALUE, respectively. The default is *No*.
|
generated will be the MINVALUE or MAXVALUE, respectively. The default is *No*.
|
||||||
|
* Move the switch next to *Unlogged?* towards the *right position* to make the sequence Unlogged.
|
||||||
|
The default is *No*. This option is available only on PostgreSQL 15 and above.
|
||||||
* The *OWNED BY* option causes the sequence to be associated with a specific
|
* The *OWNED BY* option causes the sequence to be associated with a specific
|
||||||
table column, such that if that column (or its whole table) is dropped, the
|
table column, such that if that column (or its whole table) is dropped, the
|
||||||
sequence will be automatically dropped as well. The specified table must have
|
sequence will be automatically dropped as well. The specified table must have
|
||||||
|
|
|
@ -89,6 +89,7 @@ export default class SequenceSchema extends BaseUISchema {
|
||||||
maximum: undefined,
|
maximum: undefined,
|
||||||
cache: undefined,
|
cache: undefined,
|
||||||
cycled: undefined,
|
cycled: undefined,
|
||||||
|
relpersistence: undefined,
|
||||||
relacl: [],
|
relacl: [],
|
||||||
securities: [],
|
securities: [],
|
||||||
...initValues,
|
...initValues,
|
||||||
|
@ -154,6 +155,10 @@ export default class SequenceSchema extends BaseUISchema {
|
||||||
}, {
|
}, {
|
||||||
id: 'cycled', label: gettext('Cycled'), type: 'switch',
|
id: 'cycled', label: gettext('Cycled'), type: 'switch',
|
||||||
mode: ['properties', 'create', 'edit'], group: gettext('Definition'),
|
mode: ['properties', 'create', 'edit'], group: gettext('Definition'),
|
||||||
|
}, {
|
||||||
|
id: 'relpersistence', label: gettext('Unlogged?'), type: 'switch',
|
||||||
|
mode: ['properties', 'create', 'edit'], group: gettext('Definition'),
|
||||||
|
min_version: 150000,
|
||||||
}, {
|
}, {
|
||||||
type: 'nested-fieldset', label: gettext('Owned By'), group: gettext('Definition'),
|
type: 'nested-fieldset', label: gettext('Owned By'), group: gettext('Definition'),
|
||||||
schema: this.ownedSchemaObj,
|
schema: this.ownedSchemaObj,
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
CREATE {% if data.relpersistence %}UNLOGGED {% endif %}SEQUENCE{% if add_not_exists_clause %} IF NOT EXISTS{% endif %} {{ conn|qtIdent(data.schema, data.name) }}{% if data.increment is defined and data.cycled %}
|
||||||
|
|
||||||
|
CYCLE{% endif %}{% if data.increment is defined %}
|
||||||
|
|
||||||
|
INCREMENT {{data.increment|int}}{% endif %}{% if data.start is defined %}
|
||||||
|
|
||||||
|
START {{data.start|int}}{% elif data.current_value is defined %}
|
||||||
|
|
||||||
|
START {{data.current_value|int}}{% endif %}{% if data.minimum is defined %}
|
||||||
|
|
||||||
|
MINVALUE {{data.minimum|int}}{% endif %}{% if data.maximum is defined %}
|
||||||
|
|
||||||
|
MAXVALUE {{data.maximum|int}}{% endif %}{% if data.cache is defined and data.cache|int(-1) > -1%}
|
||||||
|
|
||||||
|
CACHE {{data.cache|int}}{% endif %}{% if data.owned_table is defined and data.owned_table != None and data.owned_column is defined and data.owned_column != None %}
|
||||||
|
|
||||||
|
OWNED BY {{ conn|qtIdent(data.owned_table) }}.{{ conn|qtIdent(data.owned_column) }}{% endif %};
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
{% if scid %}
|
||||||
|
SELECT
|
||||||
|
cl.oid as oid,
|
||||||
|
cl.relname as name,
|
||||||
|
nsp.nspname as schema,
|
||||||
|
pg_catalog.pg_get_userbyid(cl.relowner) AS seqowner,
|
||||||
|
description as comment,
|
||||||
|
pg_catalog.array_to_string(cl.relacl::text[], ', ') as acl,
|
||||||
|
(SELECT pg_catalog.array_agg(provider || '=' || label) FROM pg_catalog.pg_seclabels sl1 WHERE sl1.objoid=cl.oid) AS securities,
|
||||||
|
depcl.relname AS owned_table,
|
||||||
|
att.attname AS owned_column,
|
||||||
|
(CASE WHEN cl.relpersistence = 'u' THEN true ELSE false END) AS relpersistence
|
||||||
|
FROM pg_catalog.pg_class cl
|
||||||
|
LEFT OUTER JOIN pg_catalog.pg_namespace nsp ON cl.relnamespace = nsp.oid
|
||||||
|
LEFT OUTER JOIN pg_catalog.pg_description des ON (des.objoid=cl.oid
|
||||||
|
AND des.classoid='pg_class'::regclass)
|
||||||
|
LEFT OUTER JOIN pg_catalog.pg_depend dep ON (dep.objid=cl.oid and deptype = 'a')
|
||||||
|
LEFT JOIN pg_catalog.pg_attribute att ON dep.refobjid=att.attrelid AND dep.refobjsubid=att.attnum
|
||||||
|
LEFT JOIN pg_catalog.pg_class depcl ON depcl.oid = att.attrelid
|
||||||
|
WHERE cl.relkind = 'S' AND cl.relnamespace = {{scid}}::oid
|
||||||
|
{% if seid %}AND cl.oid = {{seid}}::oid {% endif %}
|
||||||
|
ORDER BY cl.relname
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,113 @@
|
||||||
|
{% import 'macros/schemas/security.macros' as SECLABEL %}
|
||||||
|
{% import 'macros/schemas/privilege.macros' as PRIVILEGE %}
|
||||||
|
{% if data %}
|
||||||
|
{% if data.name != o_data.name %}
|
||||||
|
ALTER SEQUENCE IF EXISTS {{ conn|qtIdent(o_data.schema, o_data.name) }}
|
||||||
|
RENAME TO {{ conn|qtIdent(data.name) }};
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% if data.seqowner and data.seqowner != o_data.seqowner %}
|
||||||
|
ALTER SEQUENCE IF EXISTS {{ conn|qtIdent(o_data.schema, data.name) }}
|
||||||
|
OWNER TO {{ conn|qtIdent(data.seqowner) }};
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% if (data.owned_table == None) and (data.owned_column == None) %}
|
||||||
|
ALTER SEQUENCE IF EXISTS {{ conn|qtIdent(o_data.schema, data.name) }}
|
||||||
|
OWNED BY NONE;
|
||||||
|
{% elif (data.owned_table is defined or data.owned_column is defined) and (data.owned_table != o_data.owned_table or data.owned_column != o_data.owned_column) %}
|
||||||
|
ALTER SEQUENCE IF EXISTS {{ conn|qtIdent(o_data.schema, data.name) }}
|
||||||
|
OWNED BY {% if data.owned_table is defined %}{{ conn|qtIdent(data.owned_table) }}{% else %}{{ conn|qtIdent(o_data.owned_table) }}{% endif %}.{% if data.owned_column is defined %}{{ conn|qtIdent(data.owned_column) }}{% else %}{{ conn|qtIdent(o_data.owned_column) }}{% endif %};
|
||||||
|
{% endif %}
|
||||||
|
{% if data.current_value is defined %}
|
||||||
|
{% set seqname = conn|qtIdent(o_data.schema, data.name) %}
|
||||||
|
SELECT setval({{ seqname|qtLiteral(conn) }}, {{ data.current_value }}, true);
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% if data.relpersistence in [True, False] and data.relpersistence != o_data.relpersistence %}
|
||||||
|
ALTER SEQUENCE IF EXISTS {{ conn|qtIdent(o_data.schema, data.name) }}
|
||||||
|
SET {% if data.relpersistence %}UNLOGGED{% else %}LOGGED{% endif %};
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% set defquery = '' %}
|
||||||
|
{% if data.increment is defined %}
|
||||||
|
{% set defquery = defquery+'\n INCREMENT '+data.increment|string %}
|
||||||
|
{% endif %}
|
||||||
|
{% if data.start is defined %}
|
||||||
|
{% set defquery = defquery+'\n START '+data.start|string %}
|
||||||
|
{% endif %}
|
||||||
|
{% if data.minimum is defined %}
|
||||||
|
{% set defquery = defquery+'\n MINVALUE '+data.minimum|string %}
|
||||||
|
{% endif %}
|
||||||
|
{% if data.maximum is defined %}
|
||||||
|
{% set defquery = defquery+'\n MAXVALUE '+data.maximum|string %}
|
||||||
|
{% endif %}
|
||||||
|
{% if data.cache is defined %}
|
||||||
|
{% set defquery = defquery+'\n CACHE '+data.cache|string %}
|
||||||
|
{% endif %}
|
||||||
|
{% if data.cycled == True %}
|
||||||
|
{% set defquery = defquery+'\n CYCLE' %}
|
||||||
|
{% elif data.cycled == False %}
|
||||||
|
{% set defquery = defquery+'\n NO CYCLE' %}
|
||||||
|
{% endif %}
|
||||||
|
{% if defquery and defquery != '' %}
|
||||||
|
ALTER SEQUENCE IF EXISTS {{ conn|qtIdent(o_data.schema, data.name) }}{{ defquery }};
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% if data.schema and data.schema != o_data.schema %}
|
||||||
|
ALTER SEQUENCE IF EXISTS {{ conn|qtIdent(o_data.schema, data.name) }}
|
||||||
|
SET SCHEMA {{ conn|qtIdent(data.schema) }};
|
||||||
|
|
||||||
|
{% set seqname = conn|qtIdent(data.schema, data.name) %}
|
||||||
|
{% set schema = data.schema %}
|
||||||
|
{% else %}
|
||||||
|
{% set seqname = conn|qtIdent(o_data.schema, data.name) %}
|
||||||
|
{% set schema = o_data.schema %}
|
||||||
|
{% endif %}
|
||||||
|
{% if data.comment is defined and data.comment != o_data.comment %}
|
||||||
|
COMMENT ON SEQUENCE {{ seqname }}
|
||||||
|
IS {{ data.comment|qtLiteral(conn) }};
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% if data.securities and data.securities|length > 0 %}
|
||||||
|
|
||||||
|
{% set seclabels = data.securities %}
|
||||||
|
{% if 'deleted' in seclabels and seclabels.deleted|length > 0 %}
|
||||||
|
{% for r in seclabels.deleted %}
|
||||||
|
{{ SECLABEL.UNSET(conn, 'SEQUENCE', data.name, r.provider, schema) }}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
{% if 'added' in seclabels and seclabels.added|length > 0 %}
|
||||||
|
{% for r in seclabels.added %}
|
||||||
|
{{ SECLABEL.SET(conn, 'SEQUENCE', data.name, r.provider, r.label, schema) }}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
{% if 'changed' in seclabels and seclabels.changed|length > 0 %}
|
||||||
|
{% for r in seclabels.changed %}
|
||||||
|
{{ SECLABEL.SET(conn, 'SEQUENCE', data.name, r.provider, r.label, schema) }}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% if data.relacl %}
|
||||||
|
|
||||||
|
{% if 'deleted' in data.relacl %}
|
||||||
|
{% for priv in data.relacl.deleted %}
|
||||||
|
{{ PRIVILEGE.UNSETALL(conn, 'SEQUENCE', priv.grantee, data.name, schema) }}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
{% if 'changed' in data.relacl %}
|
||||||
|
{% for priv in data.relacl.changed %}
|
||||||
|
{% if priv.grantee != priv.old_grantee %}
|
||||||
|
{{ PRIVILEGE.UNSETALL(conn, 'SEQUENCE', priv.old_grantee, data.name, schema) }}
|
||||||
|
{% else %}
|
||||||
|
{{ PRIVILEGE.UNSETALL(conn, 'SEQUENCE', priv.grantee, data.name, schema) }}
|
||||||
|
{% endif %}
|
||||||
|
{{ PRIVILEGE.SET(conn, 'SEQUENCE', priv.grantee, data.name, priv.without_grant, priv.with_grant, schema) }}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
{% if 'added' in data.relacl %}
|
||||||
|
{% for priv in data.relacl.added %}
|
||||||
|
{{ PRIVILEGE.SET(conn, 'SEQUENCE', priv.grantee, data.name, priv.without_grant, priv.with_grant, schema) }}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,13 @@
|
||||||
|
-- SEQUENCE: public.Seq1_$%{}[]()&*^!@"'`\/#
|
||||||
|
|
||||||
|
-- DROP SEQUENCE IF EXISTS public."Seq1_$%{}[]()&*^!@""'`\/#";
|
||||||
|
|
||||||
|
CREATE SEQUENCE IF NOT EXISTS public."Seq1_$%{}[]()&*^!@""'`\/#"
|
||||||
|
INCREMENT 5
|
||||||
|
START 5
|
||||||
|
MINVALUE 5
|
||||||
|
MAXVALUE 999
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
ALTER SEQUENCE public."Seq1_$%{}[]()&*^!@""'`\/#"
|
||||||
|
OWNER TO postgres;
|
|
@ -0,0 +1,2 @@
|
||||||
|
ALTER SEQUENCE IF EXISTS public."Seq1_$%{}[]()&*^!@""'`\/#"
|
||||||
|
SET LOGGED;
|
|
@ -0,0 +1,13 @@
|
||||||
|
-- SEQUENCE: public.Seq1_$%{}[]()&*^!@"'`\/#
|
||||||
|
|
||||||
|
-- DROP SEQUENCE IF EXISTS public."Seq1_$%{}[]()&*^!@""'`\/#";
|
||||||
|
|
||||||
|
CREATE UNLOGGED SEQUENCE IF NOT EXISTS public."Seq1_$%{}[]()&*^!@""'`\/#"
|
||||||
|
INCREMENT 5
|
||||||
|
START 5
|
||||||
|
MINVALUE 5
|
||||||
|
MAXVALUE 999
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
ALTER SEQUENCE public."Seq1_$%{}[]()&*^!@""'`\/#"
|
||||||
|
OWNER TO postgres;
|
|
@ -0,0 +1,2 @@
|
||||||
|
ALTER SEQUENCE IF EXISTS public."Seq1_$%{}[]()&*^!@""'`\/#"
|
||||||
|
SET UNLOGGED;
|
|
@ -0,0 +1,13 @@
|
||||||
|
-- SEQUENCE: public.Seq1_$%{}[]()&*^!@"'`\/#
|
||||||
|
|
||||||
|
-- DROP SEQUENCE IF EXISTS public."Seq1_$%{}[]()&*^!@""'`\/#";
|
||||||
|
|
||||||
|
CREATE UNLOGGED SEQUENCE IF NOT EXISTS public."Seq1_$%{}[]()&*^!@""'`\/#"
|
||||||
|
INCREMENT 5
|
||||||
|
START 5
|
||||||
|
MINVALUE 5
|
||||||
|
MAXVALUE 999
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
ALTER SEQUENCE public."Seq1_$%{}[]()&*^!@""'`\/#"
|
||||||
|
OWNER TO postgres;
|
|
@ -0,0 +1,9 @@
|
||||||
|
CREATE UNLOGGED SEQUENCE public."Seq1_$%{}[]()&*^!@""'`\/#"
|
||||||
|
INCREMENT 5
|
||||||
|
START 5
|
||||||
|
MINVALUE 5
|
||||||
|
MAXVALUE 999
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
ALTER SEQUENCE public."Seq1_$%{}[]()&*^!@""'`\/#"
|
||||||
|
OWNER TO postgres;
|
|
@ -0,0 +1,352 @@
|
||||||
|
{
|
||||||
|
"scenarios": [
|
||||||
|
{
|
||||||
|
"type": "create",
|
||||||
|
"name": "Create Table for Owned By",
|
||||||
|
"endpoint": "NODE-table.obj",
|
||||||
|
"sql_endpoint": "NODE-table.sql_id",
|
||||||
|
"data": {
|
||||||
|
"name": "tableforownedby",
|
||||||
|
"columns": [
|
||||||
|
{
|
||||||
|
"name": "col1",
|
||||||
|
"cltype": "integer",
|
||||||
|
"is_primary_key": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "col2",
|
||||||
|
"cltype": "text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "col3",
|
||||||
|
"cltype": "integer"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"is_partitioned": false,
|
||||||
|
"schema": "public",
|
||||||
|
"spcname": "pg_default"
|
||||||
|
},
|
||||||
|
"store_object_id": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "create",
|
||||||
|
"name": "Create Sequence",
|
||||||
|
"endpoint": "NODE-sequence.obj",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql",
|
||||||
|
"data": {
|
||||||
|
"name": "Seq1_$%{}[]()&*^!@\"'`\\/#",
|
||||||
|
"seqowner": "postgres",
|
||||||
|
"schema": "public",
|
||||||
|
"increment": "5",
|
||||||
|
"start": "5",
|
||||||
|
"maximum": "999",
|
||||||
|
"minimum": "5",
|
||||||
|
"cache": "1",
|
||||||
|
"cycled": false,
|
||||||
|
"relacl": [],
|
||||||
|
"securities": []
|
||||||
|
},
|
||||||
|
"expected_sql_file": "create_sequence.sql",
|
||||||
|
"expected_msql_file": "create_sequence_msql.sql"
|
||||||
|
},{
|
||||||
|
"type": "alter",
|
||||||
|
"name": "Alter Sequence comment",
|
||||||
|
"endpoint": "NODE-sequence.obj_id",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql_id",
|
||||||
|
"data": {
|
||||||
|
"comment": "Some comment"
|
||||||
|
},
|
||||||
|
"expected_sql_file": "alter_seq_comment.sql",
|
||||||
|
"expected_msql_file": "alter_seq_comment_msql.sql"
|
||||||
|
},{
|
||||||
|
"type": "alter",
|
||||||
|
"name": "Alter Sequence properties",
|
||||||
|
"endpoint": "NODE-sequence.obj_id",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql_id",
|
||||||
|
"data": {
|
||||||
|
"current_value": "7", "increment": "12", "minimum": "2", "maximum": "9992", "cache": "2", "cycled": true
|
||||||
|
},
|
||||||
|
"expected_sql_file": "alter_seq_props.sql",
|
||||||
|
"expected_msql_file": "alter_seq_props_msql.sql"
|
||||||
|
},{
|
||||||
|
"type": "alter",
|
||||||
|
"name": "Alter Sequence add privileges",
|
||||||
|
"endpoint": "NODE-sequence.obj_id",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql_id",
|
||||||
|
"data": {
|
||||||
|
"relacl": {
|
||||||
|
"added":[{
|
||||||
|
"grantee": "PUBLIC",
|
||||||
|
"grantor": "postgres",
|
||||||
|
"privileges":[{
|
||||||
|
"privilege_type": "r",
|
||||||
|
"privilege": true,
|
||||||
|
"with_grant": false
|
||||||
|
},{
|
||||||
|
"privilege_type": "U",
|
||||||
|
"privilege": true,
|
||||||
|
"with_grant": false
|
||||||
|
},{
|
||||||
|
"privilege_type": "w",
|
||||||
|
"privilege": true,
|
||||||
|
"with_grant": false
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected_sql_file": "alter_seq_privs_add.sql",
|
||||||
|
"expected_msql_file": "alter_seq_privs_add_msql.sql"
|
||||||
|
},{
|
||||||
|
"type": "alter",
|
||||||
|
"name": "Alter Sequence update privileges",
|
||||||
|
"endpoint": "NODE-sequence.obj_id",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql_id",
|
||||||
|
"data": {
|
||||||
|
"relacl": {
|
||||||
|
"changed":[{
|
||||||
|
"grantee": "PUBLIC",
|
||||||
|
"grantor": "postgres",
|
||||||
|
"privileges":[{
|
||||||
|
"privilege_type": "r",
|
||||||
|
"privilege": true,
|
||||||
|
"with_grant": false
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected_sql_file": "alter_seq_privs_update.sql",
|
||||||
|
"expected_msql_file": "alter_seq_privs_update_msql.sql"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "alter",
|
||||||
|
"name": "Alter Sequence remove partial privileges",
|
||||||
|
"endpoint": "NODE-sequence.obj_id",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql_id",
|
||||||
|
"data": {
|
||||||
|
"relacl": {
|
||||||
|
"deleted":[{
|
||||||
|
"grantee": "PUBLIC",
|
||||||
|
"grantor": "postgres",
|
||||||
|
"privileges":[{
|
||||||
|
"privilege_type": "r",
|
||||||
|
"privilege": true,
|
||||||
|
"with_grant": false
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "alter",
|
||||||
|
"name": "Alter Sequence change grantee in privileges",
|
||||||
|
"endpoint": "NODE-sequence.obj_id",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql_id",
|
||||||
|
"data": {
|
||||||
|
"relacl": {
|
||||||
|
"changed":[{
|
||||||
|
"grantee": "PUBLIC",
|
||||||
|
"grantor": "postgres",
|
||||||
|
"old_grantee": "postgres",
|
||||||
|
"privileges":[{
|
||||||
|
"privilege_type": "r",
|
||||||
|
"privilege": true,
|
||||||
|
"with_grant": false
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected_sql_file": "alter_seq_change_grantee_privs.sql",
|
||||||
|
"expected_msql_file": "alter_seq_change_grantee_privs_msql.sql"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "alter",
|
||||||
|
"name": "Alter Sequence remove privileges",
|
||||||
|
"endpoint": "NODE-sequence.obj_id",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql_id",
|
||||||
|
"data": {
|
||||||
|
"relacl": {
|
||||||
|
"deleted":[{
|
||||||
|
"grantee": "PUBLIC",
|
||||||
|
"grantor": "postgres",
|
||||||
|
"privileges":[{
|
||||||
|
"privilege_type": "r",
|
||||||
|
"privilege": true,
|
||||||
|
"with_grant": false
|
||||||
|
},{
|
||||||
|
"privilege_type": "U",
|
||||||
|
"privilege": true,
|
||||||
|
"with_grant": false
|
||||||
|
},{
|
||||||
|
"privilege_type": "w",
|
||||||
|
"privilege": true,
|
||||||
|
"with_grant": false
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected_sql_file": "alter_seq_privs_remove.sql",
|
||||||
|
"expected_msql_file": "alter_seq_privs_remove_msql.sql"
|
||||||
|
}, {
|
||||||
|
"type": "delete",
|
||||||
|
"name": "Drop sequence",
|
||||||
|
"endpoint": "NODE-sequence.delete_id",
|
||||||
|
"data": {
|
||||||
|
"name": "Seq1_$%{}[]()&*^!@\"'`\\/#"
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "create",
|
||||||
|
"name": "Create Sequence with Negative value",
|
||||||
|
"endpoint": "NODE-sequence.obj",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql",
|
||||||
|
"data": {
|
||||||
|
"name": "Seq1_$%{}[]()&*^!@\"'`\\/#",
|
||||||
|
"seqowner": "postgres",
|
||||||
|
"schema": "public",
|
||||||
|
"increment": "-5",
|
||||||
|
"start": "-30",
|
||||||
|
"maximum": "-10",
|
||||||
|
"minimum": "-40",
|
||||||
|
"cache": "1",
|
||||||
|
"cycled": false,
|
||||||
|
"relacl": [],
|
||||||
|
"securities": []
|
||||||
|
},
|
||||||
|
"expected_sql_file": "create_negative_sequence.sql",
|
||||||
|
"expected_msql_file": "create_negative_sequence_msql.sql"
|
||||||
|
}, {
|
||||||
|
"type": "alter",
|
||||||
|
"name": "Alter Sequence properties with negative value",
|
||||||
|
"endpoint": "NODE-sequence.obj_id",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql_id",
|
||||||
|
"data": {
|
||||||
|
"increment": "-7", "minimum": "-35", "maximum": "-15"
|
||||||
|
},
|
||||||
|
"expected_sql_file": "alter_neg_seq_props.sql",
|
||||||
|
"expected_msql_file": "alter_neg_seq_props_msql.sql"
|
||||||
|
}, {
|
||||||
|
"type": "delete",
|
||||||
|
"name": "Drop negative sequence",
|
||||||
|
"endpoint": "NODE-sequence.delete_id",
|
||||||
|
"data": {
|
||||||
|
"name": "Seq1_$%{}[]()&*^!@\"'`\\/#"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "create",
|
||||||
|
"name": "Create Sequence with Owned By",
|
||||||
|
"endpoint": "NODE-sequence.obj",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql",
|
||||||
|
"data": {
|
||||||
|
"name": "Seq1_$%{}[]()&*^!@\"'`\\/#",
|
||||||
|
"seqowner": "postgres",
|
||||||
|
"schema": "public",
|
||||||
|
"increment": "5",
|
||||||
|
"start": "5",
|
||||||
|
"maximum": "999",
|
||||||
|
"minimum": "5",
|
||||||
|
"cache": "1",
|
||||||
|
"cycled": false,
|
||||||
|
"owned_table": "tableforownedby",
|
||||||
|
"owned_column": "col1",
|
||||||
|
"relacl": [],
|
||||||
|
"securities": []
|
||||||
|
},
|
||||||
|
"expected_sql_file": "create_sequence_ownedby.sql",
|
||||||
|
"expected_msql_file": "create_sequence_ownedby_msql.sql"
|
||||||
|
}, {
|
||||||
|
"type": "alter",
|
||||||
|
"name": "Alter Sequence owned by column",
|
||||||
|
"endpoint": "NODE-sequence.obj_id",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql_id",
|
||||||
|
"data": {
|
||||||
|
"owned_column": "col2"
|
||||||
|
},
|
||||||
|
"expected_sql_file": "alter_ownedby_column.sql",
|
||||||
|
"expected_msql_file": "alter_ownedby_column_msql.sql"
|
||||||
|
}, {
|
||||||
|
"type": "alter",
|
||||||
|
"name": "Alter Sequence remove owned by",
|
||||||
|
"endpoint": "NODE-sequence.obj_id",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql_id",
|
||||||
|
"data": {
|
||||||
|
"maximum": "900"
|
||||||
|
},
|
||||||
|
"expected_sql_file": "alter_ownedby_remove.sql",
|
||||||
|
"expected_msql_file": "alter_ownedby_remove_msql.sql"
|
||||||
|
}, {
|
||||||
|
"type": "delete",
|
||||||
|
"name": "Drop owned by sequence",
|
||||||
|
"endpoint": "NODE-sequence.delete_id",
|
||||||
|
"data": {
|
||||||
|
"name": "Seq1_$%{}[]()&*^!@\"'`\\/#"
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "create",
|
||||||
|
"name": "Create unlogged sequence",
|
||||||
|
"endpoint": "NODE-sequence.obj",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql",
|
||||||
|
"data": {
|
||||||
|
"name": "Seq1_$%{}[]()&*^!@\"'`\\/#",
|
||||||
|
"seqowner": "postgres",
|
||||||
|
"schema": "public",
|
||||||
|
"increment": "5",
|
||||||
|
"start": "5",
|
||||||
|
"maximum": "999",
|
||||||
|
"minimum": "5",
|
||||||
|
"cache": "1",
|
||||||
|
"cycled": false,
|
||||||
|
"relpersistence": true,
|
||||||
|
"relacl": [],
|
||||||
|
"securities": []
|
||||||
|
},
|
||||||
|
"expected_sql_file": "create_unlogged_sequence.sql",
|
||||||
|
"expected_msql_file": "create_unlogged_sequence_msql.sql"
|
||||||
|
}, {
|
||||||
|
"type": "alter",
|
||||||
|
"name": "Alter sequence set logged",
|
||||||
|
"endpoint": "NODE-sequence.obj_id",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql_id",
|
||||||
|
"data": {
|
||||||
|
"relpersistence": false
|
||||||
|
},
|
||||||
|
"expected_sql_file": "alter_seq_set_logged.sql",
|
||||||
|
"expected_msql_file": "alter_seq_set_logged_msql.sql"
|
||||||
|
}, {
|
||||||
|
"type": "alter",
|
||||||
|
"name": "Alter sequence set unlogged",
|
||||||
|
"endpoint": "NODE-sequence.obj_id",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql_id",
|
||||||
|
"data": {
|
||||||
|
"relpersistence": true
|
||||||
|
},
|
||||||
|
"expected_sql_file": "alter_seq_set_unlogged.sql",
|
||||||
|
"expected_msql_file": "alter_seq_set_unlogged_msql.sql"
|
||||||
|
}, {
|
||||||
|
"type": "delete",
|
||||||
|
"name": "Drop unlogged sequence",
|
||||||
|
"endpoint": "NODE-sequence.delete_id",
|
||||||
|
"data": {
|
||||||
|
"name": "Seq1_$%{}[]()&*^!@\"'`\\/#"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
-- SEQUENCE: public.Seq1_$%{}[]()&*^!@"'`\/#
|
||||||
|
|
||||||
|
-- DROP SEQUENCE IF EXISTS public."Seq1_$%{}[]()&*^!@""'`\/#";
|
||||||
|
|
||||||
|
CREATE SEQUENCE IF NOT EXISTS public."Seq1_$%{}[]()&*^!@""'`\/#"
|
||||||
|
INCREMENT 5
|
||||||
|
START 5
|
||||||
|
MINVALUE 5
|
||||||
|
MAXVALUE 999
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
ALTER SEQUENCE public."Seq1_$%{}[]()&*^!@""'`\/#"
|
||||||
|
OWNER TO enterprisedb;
|
|
@ -0,0 +1,2 @@
|
||||||
|
ALTER SEQUENCE IF EXISTS public."Seq1_$%{}[]()&*^!@""'`\/#"
|
||||||
|
SET LOGGED;
|
|
@ -0,0 +1,13 @@
|
||||||
|
-- SEQUENCE: public.Seq1_$%{}[]()&*^!@"'`\/#
|
||||||
|
|
||||||
|
-- DROP SEQUENCE IF EXISTS public."Seq1_$%{}[]()&*^!@""'`\/#";
|
||||||
|
|
||||||
|
CREATE UNLOGGED SEQUENCE IF NOT EXISTS public."Seq1_$%{}[]()&*^!@""'`\/#"
|
||||||
|
INCREMENT 5
|
||||||
|
START 5
|
||||||
|
MINVALUE 5
|
||||||
|
MAXVALUE 999
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
ALTER SEQUENCE public."Seq1_$%{}[]()&*^!@""'`\/#"
|
||||||
|
OWNER TO enterprisedb;
|
|
@ -0,0 +1,2 @@
|
||||||
|
ALTER SEQUENCE IF EXISTS public."Seq1_$%{}[]()&*^!@""'`\/#"
|
||||||
|
SET UNLOGGED;
|
|
@ -0,0 +1,13 @@
|
||||||
|
-- SEQUENCE: public.Seq1_$%{}[]()&*^!@"'`\/#
|
||||||
|
|
||||||
|
-- DROP SEQUENCE IF EXISTS public."Seq1_$%{}[]()&*^!@""'`\/#";
|
||||||
|
|
||||||
|
CREATE UNLOGGED SEQUENCE IF NOT EXISTS public."Seq1_$%{}[]()&*^!@""'`\/#"
|
||||||
|
INCREMENT 5
|
||||||
|
START 5
|
||||||
|
MINVALUE 5
|
||||||
|
MAXVALUE 999
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
ALTER SEQUENCE public."Seq1_$%{}[]()&*^!@""'`\/#"
|
||||||
|
OWNER TO enterprisedb;
|
|
@ -0,0 +1,9 @@
|
||||||
|
CREATE UNLOGGED SEQUENCE public."Seq1_$%{}[]()&*^!@""'`\/#"
|
||||||
|
INCREMENT 5
|
||||||
|
START 5
|
||||||
|
MINVALUE 5
|
||||||
|
MAXVALUE 999
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
ALTER SEQUENCE public."Seq1_$%{}[]()&*^!@""'`\/#"
|
||||||
|
OWNER TO enterprisedb;
|
|
@ -0,0 +1,350 @@
|
||||||
|
{
|
||||||
|
"scenarios": [
|
||||||
|
{
|
||||||
|
"type": "create",
|
||||||
|
"name": "Create Table for Owned By",
|
||||||
|
"endpoint": "NODE-table.obj",
|
||||||
|
"sql_endpoint": "NODE-table.sql_id",
|
||||||
|
"data": {
|
||||||
|
"name": "tableforownedby",
|
||||||
|
"columns": [
|
||||||
|
{
|
||||||
|
"name": "col1",
|
||||||
|
"cltype": "integer",
|
||||||
|
"is_primary_key": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "col2",
|
||||||
|
"cltype": "text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "col3",
|
||||||
|
"cltype": "integer"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"is_partitioned": false,
|
||||||
|
"schema": "public",
|
||||||
|
"spcname": "pg_default"
|
||||||
|
},
|
||||||
|
"store_object_id": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "create",
|
||||||
|
"name": "Create Sequence",
|
||||||
|
"endpoint": "NODE-sequence.obj",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql",
|
||||||
|
"data": {
|
||||||
|
"name": "Seq1_$%{}[]()&*^!@\"'`\\/#",
|
||||||
|
"seqowner": "enterprisedb",
|
||||||
|
"schema": "public",
|
||||||
|
"increment": "5",
|
||||||
|
"start": "5",
|
||||||
|
"maximum": "999",
|
||||||
|
"minimum": "5",
|
||||||
|
"cache": "1",
|
||||||
|
"cycled": false,
|
||||||
|
"relacl": [],
|
||||||
|
"securities": []
|
||||||
|
},
|
||||||
|
"expected_sql_file": "create_sequence.sql",
|
||||||
|
"expected_msql_file": "create_sequence_msql.sql"
|
||||||
|
},{
|
||||||
|
"type": "alter",
|
||||||
|
"name": "Alter Sequence comment",
|
||||||
|
"endpoint": "NODE-sequence.obj_id",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql_id",
|
||||||
|
"data": {
|
||||||
|
"comment": "Some comment"
|
||||||
|
},
|
||||||
|
"expected_sql_file": "alter_seq_comment.sql",
|
||||||
|
"expected_msql_file": "alter_seq_comment_msql.sql"
|
||||||
|
},{
|
||||||
|
"type": "alter",
|
||||||
|
"name": "Alter Sequence properties",
|
||||||
|
"endpoint": "NODE-sequence.obj_id",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql_id",
|
||||||
|
"data": {
|
||||||
|
"current_value": "7", "increment": "12", "minimum": "2", "maximum": "9992", "cache": "2", "cycled": true
|
||||||
|
},
|
||||||
|
"expected_sql_file": "alter_seq_props.sql",
|
||||||
|
"expected_msql_file": "alter_seq_props_msql.sql"
|
||||||
|
},{
|
||||||
|
"type": "alter",
|
||||||
|
"name": "Alter Sequence add privileges",
|
||||||
|
"endpoint": "NODE-sequence.obj_id",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql_id",
|
||||||
|
"data": {
|
||||||
|
"relacl": {
|
||||||
|
"added":[{
|
||||||
|
"grantee": "PUBLIC",
|
||||||
|
"grantor": "enterprisedb",
|
||||||
|
"privileges":[{
|
||||||
|
"privilege_type": "r",
|
||||||
|
"privilege": true,
|
||||||
|
"with_grant": false
|
||||||
|
},{
|
||||||
|
"privilege_type": "U",
|
||||||
|
"privilege": true,
|
||||||
|
"with_grant": false
|
||||||
|
},{
|
||||||
|
"privilege_type": "w",
|
||||||
|
"privilege": true,
|
||||||
|
"with_grant": false
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected_sql_file": "alter_seq_privs_add.sql",
|
||||||
|
"expected_msql_file": "alter_seq_privs_add_msql.sql"
|
||||||
|
},{
|
||||||
|
"type": "alter",
|
||||||
|
"name": "Alter Sequence update privileges",
|
||||||
|
"endpoint": "NODE-sequence.obj_id",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql_id",
|
||||||
|
"data": {
|
||||||
|
"relacl": {
|
||||||
|
"changed":[{
|
||||||
|
"grantee": "PUBLIC",
|
||||||
|
"grantor": "enterprisedb",
|
||||||
|
"privileges":[{
|
||||||
|
"privilege_type": "r",
|
||||||
|
"privilege": true,
|
||||||
|
"with_grant": false
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected_sql_file": "alter_seq_privs_update.sql",
|
||||||
|
"expected_msql_file": "alter_seq_privs_update_msql.sql"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "alter",
|
||||||
|
"name": "Alter Sequence remove partial privileges",
|
||||||
|
"endpoint": "NODE-sequence.obj_id",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql_id",
|
||||||
|
"data": {
|
||||||
|
"relacl": {
|
||||||
|
"deleted":[{
|
||||||
|
"grantee": "PUBLIC",
|
||||||
|
"grantor": "enterprisedb",
|
||||||
|
"privileges":[{
|
||||||
|
"privilege_type": "r",
|
||||||
|
"privilege": true,
|
||||||
|
"with_grant": false
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "alter",
|
||||||
|
"name": "Alter Sequence change grantee in privileges",
|
||||||
|
"endpoint": "NODE-sequence.obj_id",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql_id",
|
||||||
|
"data": {
|
||||||
|
"relacl": {
|
||||||
|
"changed":[{
|
||||||
|
"grantee": "PUBLIC",
|
||||||
|
"grantor": "enterprisedb",
|
||||||
|
"old_grantee": "enterprisedb",
|
||||||
|
"privileges":[{
|
||||||
|
"privilege_type": "r",
|
||||||
|
"privilege": true,
|
||||||
|
"with_grant": false
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected_sql_file": "alter_seq_change_grantee_privs.sql",
|
||||||
|
"expected_msql_file": "alter_seq_change_grantee_privs_msql.sql"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "alter",
|
||||||
|
"name": "Alter Sequence remove privileges",
|
||||||
|
"endpoint": "NODE-sequence.obj_id",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql_id",
|
||||||
|
"data": {
|
||||||
|
"relacl": {
|
||||||
|
"deleted":[{
|
||||||
|
"grantee": "PUBLIC",
|
||||||
|
"grantor": "enterprisedb",
|
||||||
|
"privileges":[{
|
||||||
|
"privilege_type": "r",
|
||||||
|
"privilege": true,
|
||||||
|
"with_grant": false
|
||||||
|
},{
|
||||||
|
"privilege_type": "U",
|
||||||
|
"privilege": true,
|
||||||
|
"with_grant": false
|
||||||
|
},{
|
||||||
|
"privilege_type": "w",
|
||||||
|
"privilege": true,
|
||||||
|
"with_grant": false
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected_sql_file": "alter_seq_privs_remove.sql",
|
||||||
|
"expected_msql_file": "alter_seq_privs_remove_msql.sql"
|
||||||
|
}, {
|
||||||
|
"type": "delete",
|
||||||
|
"name": "Drop sequence",
|
||||||
|
"endpoint": "NODE-sequence.delete_id",
|
||||||
|
"data": {
|
||||||
|
"name": "Seq1_$%{}[]()&*^!@\"'`\\/#"
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "create",
|
||||||
|
"name": "Create Sequence with Negative value",
|
||||||
|
"endpoint": "NODE-sequence.obj",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql",
|
||||||
|
"data": {
|
||||||
|
"name": "Seq1_$%{}[]()&*^!@\"'`\\/#",
|
||||||
|
"seqowner": "enterprisedb",
|
||||||
|
"schema": "public",
|
||||||
|
"increment": "-5",
|
||||||
|
"start": "-30",
|
||||||
|
"maximum": "-10",
|
||||||
|
"minimum": "-40",
|
||||||
|
"cache": "1",
|
||||||
|
"cycled": false,
|
||||||
|
"relacl": [],
|
||||||
|
"securities": []
|
||||||
|
},
|
||||||
|
"expected_sql_file": "create_negative_sequence.sql",
|
||||||
|
"expected_msql_file": "create_negative_sequence_msql.sql"
|
||||||
|
}, {
|
||||||
|
"type": "alter",
|
||||||
|
"name": "Alter Sequence properties with negative value",
|
||||||
|
"endpoint": "NODE-sequence.obj_id",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql_id",
|
||||||
|
"data": {
|
||||||
|
"increment": "-7", "minimum": "-35", "maximum": "-15"
|
||||||
|
},
|
||||||
|
"expected_sql_file": "alter_neg_seq_props.sql",
|
||||||
|
"expected_msql_file": "alter_neg_seq_props_msql.sql"
|
||||||
|
}, {
|
||||||
|
"type": "delete",
|
||||||
|
"name": "Drop negative sequence",
|
||||||
|
"endpoint": "NODE-sequence.delete_id",
|
||||||
|
"data": {
|
||||||
|
"name": "Seq1_$%{}[]()&*^!@\"'`\\/#"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "create",
|
||||||
|
"name": "Create Sequence with Owned By",
|
||||||
|
"endpoint": "NODE-sequence.obj",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql",
|
||||||
|
"data": {
|
||||||
|
"name": "Seq1_$%{}[]()&*^!@\"'`\\/#",
|
||||||
|
"seqowner": "enterprisedb",
|
||||||
|
"schema": "public",
|
||||||
|
"increment": "5",
|
||||||
|
"start": "5",
|
||||||
|
"maximum": "999",
|
||||||
|
"minimum": "5",
|
||||||
|
"cache": "1",
|
||||||
|
"cycled": false,
|
||||||
|
"owned_table": "tableforownedby",
|
||||||
|
"owned_column": "col1",
|
||||||
|
"relacl": [],
|
||||||
|
"securities": []
|
||||||
|
},
|
||||||
|
"expected_sql_file": "create_sequence_ownedby.sql",
|
||||||
|
"expected_msql_file": "create_sequence_ownedby_msql.sql"
|
||||||
|
}, {
|
||||||
|
"type": "alter",
|
||||||
|
"name": "Alter Sequence owned by column",
|
||||||
|
"endpoint": "NODE-sequence.obj_id",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql_id",
|
||||||
|
"data": {
|
||||||
|
"owned_column": "col2"
|
||||||
|
},
|
||||||
|
"expected_sql_file": "alter_ownedby_column.sql",
|
||||||
|
"expected_msql_file": "alter_ownedby_column_msql.sql"
|
||||||
|
}, {
|
||||||
|
"type": "alter",
|
||||||
|
"name": "Alter Sequence remove owned by",
|
||||||
|
"endpoint": "NODE-sequence.obj_id",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql_id",
|
||||||
|
"data": {
|
||||||
|
"maximum": "900"
|
||||||
|
},
|
||||||
|
"expected_sql_file": "alter_ownedby_remove.sql",
|
||||||
|
"expected_msql_file": "alter_ownedby_remove_msql.sql"
|
||||||
|
}, {
|
||||||
|
"type": "delete",
|
||||||
|
"name": "Drop owned by sequence",
|
||||||
|
"endpoint": "NODE-sequence.delete_id",
|
||||||
|
"data": {
|
||||||
|
"name": "Seq1_$%{}[]()&*^!@\"'`\\/#"
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "create",
|
||||||
|
"name": "Create unlogged sequence",
|
||||||
|
"endpoint": "NODE-sequence.obj",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql",
|
||||||
|
"data": {
|
||||||
|
"name": "Seq1_$%{}[]()&*^!@\"'`\\/#",
|
||||||
|
"seqowner": "enterprisedb",
|
||||||
|
"schema": "public",
|
||||||
|
"increment": "5",
|
||||||
|
"start": "5",
|
||||||
|
"maximum": "999",
|
||||||
|
"minimum": "5",
|
||||||
|
"cache": "1",
|
||||||
|
"cycled": false,
|
||||||
|
"relpersistence": true,
|
||||||
|
"relacl": [],
|
||||||
|
"securities": []
|
||||||
|
},
|
||||||
|
"expected_sql_file": "create_unlogged_sequence.sql",
|
||||||
|
"expected_msql_file": "create_unlogged_sequence_msql.sql"
|
||||||
|
}, {
|
||||||
|
"type": "alter",
|
||||||
|
"name": "Alter sequence set logged",
|
||||||
|
"endpoint": "NODE-sequence.obj_id",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql_id",
|
||||||
|
"data": {
|
||||||
|
"relpersistence": false
|
||||||
|
},
|
||||||
|
"expected_sql_file": "alter_seq_set_logged.sql",
|
||||||
|
"expected_msql_file": "alter_seq_set_logged_msql.sql"
|
||||||
|
}, {
|
||||||
|
"type": "alter",
|
||||||
|
"name": "Alter sequence set unlogged",
|
||||||
|
"endpoint": "NODE-sequence.obj_id",
|
||||||
|
"sql_endpoint": "NODE-sequence.sql_id",
|
||||||
|
"msql_endpoint": "NODE-sequence.msql_id",
|
||||||
|
"data": {
|
||||||
|
"relpersistence": true
|
||||||
|
},
|
||||||
|
"expected_sql_file": "alter_seq_set_unlogged.sql",
|
||||||
|
"expected_msql_file": "alter_seq_set_unlogged_msql.sql"
|
||||||
|
}, {
|
||||||
|
"type": "delete",
|
||||||
|
"name": "Drop unlogged sequence",
|
||||||
|
"endpoint": "NODE-sequence.delete_id",
|
||||||
|
"data": {
|
||||||
|
"name": "Seq1_$%{}[]()&*^!@\"'`\\/#"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@ from pgadmin.browser.server_groups.servers.databases.tests import utils as \
|
||||||
from pgadmin.utils.route import BaseTestGenerator
|
from pgadmin.utils.route import BaseTestGenerator
|
||||||
from regression import parent_node_dict
|
from regression import parent_node_dict
|
||||||
from regression.python_test_utils import test_utils as utils
|
from regression.python_test_utils import test_utils as utils
|
||||||
|
from pgadmin.utils import server_utils
|
||||||
|
|
||||||
|
|
||||||
class SequenceAddTestCase(BaseTestGenerator):
|
class SequenceAddTestCase(BaseTestGenerator):
|
||||||
|
@ -27,6 +28,7 @@ class SequenceAddTestCase(BaseTestGenerator):
|
||||||
'Create sequence with positive values',
|
'Create sequence with positive values',
|
||||||
dict(
|
dict(
|
||||||
url='/browser/sequence/obj/',
|
url='/browser/sequence/obj/',
|
||||||
|
inventory_data={},
|
||||||
# Valid optional data
|
# Valid optional data
|
||||||
data={
|
data={
|
||||||
"cache": "1",
|
"cache": "1",
|
||||||
|
@ -44,6 +46,7 @@ class SequenceAddTestCase(BaseTestGenerator):
|
||||||
'Create sequence with negative values',
|
'Create sequence with negative values',
|
||||||
dict(
|
dict(
|
||||||
url='/browser/sequence/obj/',
|
url='/browser/sequence/obj/',
|
||||||
|
inventory_data={},
|
||||||
# Valid optional data
|
# Valid optional data
|
||||||
data={
|
data={
|
||||||
"cache": "1",
|
"cache": "1",
|
||||||
|
@ -56,23 +59,54 @@ class SequenceAddTestCase(BaseTestGenerator):
|
||||||
"start": "-30"
|
"start": "-30"
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
),
|
||||||
|
(
|
||||||
|
'Create unlogged sequence',
|
||||||
|
dict(
|
||||||
|
url='/browser/sequence/obj/',
|
||||||
|
inventory_data={
|
||||||
|
"server_min_version": 150000,
|
||||||
|
"skip_msg": "Unlogged sequences is not supported by \
|
||||||
|
PG/PPAS 15.0 and below"
|
||||||
|
},
|
||||||
|
# Valid optional data
|
||||||
|
data={
|
||||||
|
"cache": "1",
|
||||||
|
"cycled": True,
|
||||||
|
"increment": "1",
|
||||||
|
"maximum": "100000",
|
||||||
|
"minimum": "1",
|
||||||
|
"name": "test_sequence_add_%s" % (str(uuid.uuid4())[1:8]),
|
||||||
|
"securities": [],
|
||||||
|
"start": "100",
|
||||||
|
"relpersistence": True
|
||||||
|
}
|
||||||
|
)
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
|
|
||||||
def runTest(self):
|
|
||||||
"""This function will add sequence(s) under schema node."""
|
|
||||||
db_name = parent_node_dict["database"][-1]["db_name"]
|
|
||||||
schema_info = parent_node_dict["schema"][-1]
|
schema_info = parent_node_dict["schema"][-1]
|
||||||
self.server_id = schema_info["server_id"]
|
self.server_id = schema_info["server_id"]
|
||||||
|
|
||||||
|
if "server_min_version" in self.inventory_data:
|
||||||
|
server_con = server_utils.connect_server(self, self.server_id)
|
||||||
|
if not server_con["info"] == "Server connected.":
|
||||||
|
raise Exception("Could not connect to server to add "
|
||||||
|
"sequence.")
|
||||||
|
if server_con["data"]["version"] < \
|
||||||
|
self.inventory_data["server_min_version"]:
|
||||||
|
self.skipTest(self.inventory_data["skip_msg"])
|
||||||
|
|
||||||
|
db_name = parent_node_dict["database"][-1]["db_name"]
|
||||||
self.db_id = schema_info["db_id"]
|
self.db_id = schema_info["db_id"]
|
||||||
db_con = database_utils.connect_database(self, utils.SERVER_GROUP,
|
db_con = database_utils.connect_database(self, utils.SERVER_GROUP,
|
||||||
self.server_id, self.db_id)
|
self.server_id, self.db_id)
|
||||||
if not db_con['data']["connected"]:
|
if not db_con['data']["connected"]:
|
||||||
raise Exception("Could not connect to database to add sequence.")
|
raise Exception("Could not connect to database to add sequence.")
|
||||||
schema_id = schema_info["schema_id"]
|
self.schema_id = schema_info["schema_id"]
|
||||||
schema_name = schema_info["schema_name"]
|
schema_name = schema_info["schema_name"]
|
||||||
schema_response = schema_utils.verify_schemas(self.server,
|
schema_response = schema_utils.verify_schemas(self.server,
|
||||||
db_name,
|
db_name,
|
||||||
|
@ -112,10 +146,12 @@ class SequenceAddTestCase(BaseTestGenerator):
|
||||||
|
|
||||||
self.data.update(common_data)
|
self.data.update(common_data)
|
||||||
|
|
||||||
|
def runTest(self):
|
||||||
|
"""This function will add sequence(s) under schema node."""
|
||||||
response = self.tester.post(
|
response = self.tester.post(
|
||||||
self.url + str(utils.SERVER_GROUP) + '/' +
|
self.url + str(utils.SERVER_GROUP) + '/' +
|
||||||
str(self.server_id) + '/' + str(self.db_id) +
|
str(self.server_id) + '/' + str(self.db_id) +
|
||||||
'/' + str(schema_id) + '/',
|
'/' + str(self.schema_id) + '/',
|
||||||
data=json.dumps(self.data),
|
data=json.dumps(self.data),
|
||||||
content_type='html/json')
|
content_type='html/json')
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
|
@ -18,6 +18,7 @@ from pgadmin.utils.route import BaseTestGenerator
|
||||||
from regression import parent_node_dict
|
from regression import parent_node_dict
|
||||||
from regression.python_test_utils import test_utils as utils
|
from regression.python_test_utils import test_utils as utils
|
||||||
from . import utils as sequence_utils
|
from . import utils as sequence_utils
|
||||||
|
from pgadmin.utils import server_utils
|
||||||
|
|
||||||
|
|
||||||
class SequencePutTestCase(BaseTestGenerator):
|
class SequencePutTestCase(BaseTestGenerator):
|
||||||
|
@ -27,6 +28,7 @@ class SequencePutTestCase(BaseTestGenerator):
|
||||||
('Alter positive sequence comment, increment, max and min value',
|
('Alter positive sequence comment, increment, max and min value',
|
||||||
dict(
|
dict(
|
||||||
url='/browser/sequence/obj/',
|
url='/browser/sequence/obj/',
|
||||||
|
inventory_data={},
|
||||||
data={
|
data={
|
||||||
"comment": "This is sequence update comment",
|
"comment": "This is sequence update comment",
|
||||||
"increment": "5",
|
"increment": "5",
|
||||||
|
@ -38,6 +40,7 @@ class SequencePutTestCase(BaseTestGenerator):
|
||||||
('Alter negative sequence comment, increment, max and min value',
|
('Alter negative sequence comment, increment, max and min value',
|
||||||
dict(
|
dict(
|
||||||
url='/browser/sequence/obj/',
|
url='/browser/sequence/obj/',
|
||||||
|
inventory_data={},
|
||||||
data={
|
data={
|
||||||
"comment": "This is sequence update comment",
|
"comment": "This is sequence update comment",
|
||||||
"increment": "-7",
|
"increment": "-7",
|
||||||
|
@ -45,6 +48,19 @@ class SequencePutTestCase(BaseTestGenerator):
|
||||||
"minimum": "-35",
|
"minimum": "-35",
|
||||||
},
|
},
|
||||||
positive_seq=False
|
positive_seq=False
|
||||||
|
)),
|
||||||
|
('Alter sequence set unlogged',
|
||||||
|
dict(
|
||||||
|
url='/browser/sequence/obj/',
|
||||||
|
inventory_data={
|
||||||
|
"server_min_version": 150000,
|
||||||
|
"skip_msg": "Unlogged sequences is not \
|
||||||
|
supported by PG/PPAS 15.0 and below"
|
||||||
|
},
|
||||||
|
data={
|
||||||
|
"relpersistence": True
|
||||||
|
},
|
||||||
|
positive_seq=True
|
||||||
))
|
))
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -53,6 +69,16 @@ class SequencePutTestCase(BaseTestGenerator):
|
||||||
self.db_name = parent_node_dict["database"][-1]["db_name"]
|
self.db_name = parent_node_dict["database"][-1]["db_name"]
|
||||||
schema_info = parent_node_dict["schema"][-1]
|
schema_info = parent_node_dict["schema"][-1]
|
||||||
self.server_id = schema_info["server_id"]
|
self.server_id = schema_info["server_id"]
|
||||||
|
|
||||||
|
if "server_min_version" in self.inventory_data:
|
||||||
|
server_con = server_utils.connect_server(self, self.server_id)
|
||||||
|
if not server_con["info"] == "Server connected.":
|
||||||
|
raise Exception("Could not connect to server to add "
|
||||||
|
"sequence.")
|
||||||
|
if server_con["data"]["version"] < \
|
||||||
|
self.inventory_data["server_min_version"]:
|
||||||
|
self.skipTest(self.inventory_data["skip_msg"])
|
||||||
|
|
||||||
self.db_id = schema_info["db_id"]
|
self.db_id = schema_info["db_id"]
|
||||||
db_con = database_utils.connect_database(self, utils.SERVER_GROUP,
|
db_con = database_utils.connect_database(self, utils.SERVER_GROUP,
|
||||||
self.server_id, self.db_id)
|
self.server_id, self.db_id)
|
||||||
|
|
Loading…
Reference in New Issue