mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
Added support of Packages, Sequences and Synonyms to the Schema Diff. Fixes #5264
This commit is contained in:
parent
4036f2a0f2
commit
ce89ae3c1d
@ -10,6 +10,7 @@ New features
|
|||||||
************
|
************
|
||||||
|
|
||||||
| `Issue #5184 <https://redmine.postgresql.org/issues/5184>`_ - Added support for parameter toast_tuple_target and parallel_workers of the table.
|
| `Issue #5184 <https://redmine.postgresql.org/issues/5184>`_ - Added support for parameter toast_tuple_target and parallel_workers of the table.
|
||||||
|
| `Issue #5264 <https://redmine.postgresql.org/issues/5264>`_ - Added support of Packages, Sequences and Synonyms to the Schema Diff.
|
||||||
|
|
||||||
Housekeeping
|
Housekeeping
|
||||||
************
|
************
|
||||||
|
@ -423,6 +423,7 @@ class PackageView(PGChildNodeView, SchemaDiffObjectCompare):
|
|||||||
did: Database ID
|
did: Database ID
|
||||||
scid: Schema ID
|
scid: Schema ID
|
||||||
pkgid: Package ID
|
pkgid: Package ID
|
||||||
|
only_sql: Return SQL only if True
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
|
|
||||||
@ -583,6 +584,8 @@ class PackageView(PGChildNodeView, SchemaDiffObjectCompare):
|
|||||||
did: Database ID
|
did: Database ID
|
||||||
scid: Schema ID
|
scid: Schema ID
|
||||||
pkgid: Package ID
|
pkgid: Package ID
|
||||||
|
sqltab: True
|
||||||
|
diff_schema: Target Schema
|
||||||
"""
|
"""
|
||||||
|
|
||||||
required_args = [
|
required_args = [
|
||||||
@ -818,16 +821,27 @@ class PackageView(PGChildNodeView, SchemaDiffObjectCompare):
|
|||||||
|
|
||||||
def get_sql_from_diff(self, gid, sid, did, scid, oid, data=None,
|
def get_sql_from_diff(self, gid, sid, did, scid, oid, data=None,
|
||||||
diff_schema=None, drop_sql=False):
|
diff_schema=None, drop_sql=False):
|
||||||
|
"""
|
||||||
|
This function is used to get the DDL/DML statements.
|
||||||
|
:param gid: Group ID
|
||||||
|
:param sid: Serve ID
|
||||||
|
:param did: Database ID
|
||||||
|
:param scid: Schema ID
|
||||||
|
:param oid: Package ID
|
||||||
|
:param data: Difference data
|
||||||
|
:param diff_schema: Target Schema
|
||||||
|
:param drop_sql: True if need to drop the domains
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
sql = ''
|
sql = ''
|
||||||
if data:
|
if data:
|
||||||
if diff_schema:
|
if diff_schema:
|
||||||
data['schema'] = diff_schema
|
data['schema'] = diff_schema
|
||||||
status, sql = self.getSQL(gid, sid, did, data, scid, oid)
|
sql, name = self.getSQL(gid, sid, did, data, scid, oid)
|
||||||
else:
|
else:
|
||||||
if drop_sql:
|
if drop_sql:
|
||||||
sql = self.delete(gid=gid, sid=sid, did=did,
|
sql = self.delete(gid=gid, sid=sid, did=did,
|
||||||
scid=scid, pkgid=oid, only_sql=True)
|
scid=scid, pkgid=oid, only_sql=True)
|
||||||
|
|
||||||
elif diff_schema:
|
elif diff_schema:
|
||||||
sql = self.sql(gid=gid, sid=sid, did=did, scid=scid, pkgid=oid,
|
sql = self.sql(gid=gid, sid=sid, did=did, scid=scid, pkgid=oid,
|
||||||
diff_schema=diff_schema, json_resp=False)
|
diff_schema=diff_schema, json_resp=False)
|
||||||
@ -837,4 +851,5 @@ class PackageView(PGChildNodeView, SchemaDiffObjectCompare):
|
|||||||
return sql
|
return sql
|
||||||
|
|
||||||
|
|
||||||
|
SchemaDiffRegistry(blueprint.node_type, PackageView)
|
||||||
PackageView.register_node_view(blueprint)
|
PackageView.register_node_view(blueprint)
|
||||||
|
@ -10,6 +10,7 @@ END {{ conn|qtIdent(data.name) }};
|
|||||||
CREATE OR REPLACE PACKAGE BODY {{ conn|qtIdent(data.schema,data.name) }}
|
CREATE OR REPLACE PACKAGE BODY {{ conn|qtIdent(data.schema,data.name) }}
|
||||||
IS
|
IS
|
||||||
{{data.pkgbodysrc}}
|
{{data.pkgbodysrc}}
|
||||||
|
|
||||||
END {{ conn|qtIdent(data.name) }};
|
END {{ conn|qtIdent(data.name) }};
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if data.pkgacl %}
|
{% if data.pkgacl %}
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
{% import 'macros/schemas/privilege.macros' as PRIVILEGE %}
|
{% import 'macros/schemas/privilege.macros' as PRIVILEGE %}
|
||||||
|
|
||||||
{% if data %}
|
{% if data %}
|
||||||
|
{% set recreate_pkg_body = false %}
|
||||||
{% if data.pkgheadsrc is defined and data.pkgheadsrc != o_data.pkgheadsrc and o_data.pkgbodysrc != None or (data.pkgbodysrc is defined and data.pkgbodysrc == '') %}
|
{% if data.pkgheadsrc is defined and data.pkgheadsrc != o_data.pkgheadsrc and o_data.pkgbodysrc != None or (data.pkgbodysrc is defined and data.pkgbodysrc == '') %}
|
||||||
|
{% set recreate_pkg_body = true %}
|
||||||
DROP PACKAGE BODY {{ conn|qtIdent(data.schema,data.name) }};
|
DROP PACKAGE BODY {{ conn|qtIdent(data.schema,data.name) }};
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if data.pkgheadsrc %}
|
{% if data.pkgheadsrc %}
|
||||||
@ -12,11 +14,12 @@ IS
|
|||||||
END {{ conn|qtIdent(data.name) }};
|
END {{ conn|qtIdent(data.name) }};
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if data.pkgbodysrc %}
|
{% if data.pkgbodysrc or (o_data.pkgbodysrc and recreate_pkg_body) %}
|
||||||
|
|
||||||
CREATE OR REPLACE PACKAGE BODY {{ conn|qtIdent(data.schema,data.name) }}
|
CREATE OR REPLACE PACKAGE BODY {{ conn|qtIdent(data.schema,data.name) }}
|
||||||
IS
|
IS
|
||||||
{{data.pkgbodysrc}}
|
{% if data.pkgbodysrc %}{{data.pkgbodysrc}}{% else %}{{o_data.pkgbodysrc}}{% endif %}
|
||||||
|
|
||||||
END {{ conn|qtIdent(data.name) }};
|
END {{ conn|qtIdent(data.name) }};
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if data.pkgacl %}
|
{% if data.pkgacl %}
|
||||||
|
@ -436,7 +436,7 @@ class SequenceView(PGChildNodeView, SchemaDiffObjectCompare):
|
|||||||
)
|
)
|
||||||
|
|
||||||
@check_precondition(action='delete')
|
@check_precondition(action='delete')
|
||||||
def delete(self, gid, sid, did, scid, seid=None):
|
def delete(self, gid, sid, did, scid, seid=None, only_sql=False):
|
||||||
"""
|
"""
|
||||||
This function will drop the object
|
This function will drop the object
|
||||||
|
|
||||||
@ -446,6 +446,7 @@ class SequenceView(PGChildNodeView, SchemaDiffObjectCompare):
|
|||||||
did: Database ID
|
did: Database ID
|
||||||
scid: Schema ID
|
scid: Schema ID
|
||||||
seid: Sequence ID
|
seid: Sequence ID
|
||||||
|
only_sql: Return SQL only if True
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
|
|
||||||
@ -489,6 +490,10 @@ class SequenceView(PGChildNodeView, SchemaDiffObjectCompare):
|
|||||||
"/".join([self.template_path, 'delete.sql']),
|
"/".join([self.template_path, 'delete.sql']),
|
||||||
data=res['rows'][0], cascade=cascade
|
data=res['rows'][0], cascade=cascade
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if only_sql:
|
||||||
|
return SQL
|
||||||
|
|
||||||
status, res = self.conn.execute_scalar(SQL)
|
status, res = self.conn.execute_scalar(SQL)
|
||||||
if not status:
|
if not status:
|
||||||
return internal_server_error(errormsg=res)
|
return internal_server_error(errormsg=res)
|
||||||
@ -675,7 +680,8 @@ class SequenceView(PGChildNodeView, SchemaDiffObjectCompare):
|
|||||||
return SQL, data['name']
|
return SQL, data['name']
|
||||||
|
|
||||||
@check_precondition(action="sql")
|
@check_precondition(action="sql")
|
||||||
def sql(self, gid, sid, did, scid, seid):
|
def sql(self, gid, sid, did, scid, seid, diff_schema=None,
|
||||||
|
json_resp=True):
|
||||||
"""
|
"""
|
||||||
This function will generate sql for sql panel
|
This function will generate sql for sql panel
|
||||||
|
|
||||||
@ -685,6 +691,8 @@ class SequenceView(PGChildNodeView, SchemaDiffObjectCompare):
|
|||||||
did: Database ID
|
did: Database ID
|
||||||
scid: Schema ID
|
scid: Schema ID
|
||||||
seid: Sequence ID
|
seid: Sequence ID
|
||||||
|
diff_schema: Schema diff target schema name
|
||||||
|
json_resp: json response or plain text response
|
||||||
"""
|
"""
|
||||||
|
|
||||||
SQL = render_template(
|
SQL = render_template(
|
||||||
@ -714,6 +722,10 @@ class SequenceView(PGChildNodeView, SchemaDiffObjectCompare):
|
|||||||
row['cycled'] = rset1['rows'][0]['is_cycled']
|
row['cycled'] = rset1['rows'][0]['is_cycled']
|
||||||
|
|
||||||
result = res['rows'][0]
|
result = res['rows'][0]
|
||||||
|
|
||||||
|
if diff_schema:
|
||||||
|
result['schema'] = diff_schema
|
||||||
|
|
||||||
result = self._formatter(result, scid, seid)
|
result = self._formatter(result, scid, seid)
|
||||||
SQL, name = self.getSQL(gid, sid, did, result, scid)
|
SQL, name = self.getSQL(gid, sid, did, result, scid)
|
||||||
# Most probably this is due to error
|
# Most probably this is due to error
|
||||||
@ -721,6 +733,10 @@ class SequenceView(PGChildNodeView, SchemaDiffObjectCompare):
|
|||||||
return SQL
|
return SQL
|
||||||
SQL = SQL.strip('\n').strip(' ')
|
SQL = SQL.strip('\n').strip(' ')
|
||||||
|
|
||||||
|
# Return sql for schema diff
|
||||||
|
if not json_resp:
|
||||||
|
return SQL
|
||||||
|
|
||||||
sql_header = u"""-- SEQUENCE: {0}
|
sql_header = u"""-- SEQUENCE: {0}
|
||||||
|
|
||||||
-- DROP SEQUENCE {0};
|
-- DROP SEQUENCE {0};
|
||||||
@ -912,5 +928,37 @@ class SequenceView(PGChildNodeView, SchemaDiffObjectCompare):
|
|||||||
|
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
def get_sql_from_diff(self, gid, sid, did, scid, oid, data=None,
|
||||||
|
diff_schema=None, drop_sql=False):
|
||||||
|
"""
|
||||||
|
This function is used to get the DDL/DML statements.
|
||||||
|
:param gid: Group ID
|
||||||
|
:param sid: Serve ID
|
||||||
|
:param did: Database ID
|
||||||
|
:param scid: Schema ID
|
||||||
|
:param oid: Sequence ID
|
||||||
|
:param data: Difference data
|
||||||
|
:param diff_schema: Target Schema
|
||||||
|
:param drop_sql: True if need to drop the domains
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
sql = ''
|
||||||
|
if data:
|
||||||
|
if diff_schema:
|
||||||
|
data['schema'] = diff_schema
|
||||||
|
sql, name = self.getSQL(gid, sid, did, data, scid, oid)
|
||||||
|
else:
|
||||||
|
if drop_sql:
|
||||||
|
sql = self.delete(gid=gid, sid=sid, did=did,
|
||||||
|
scid=scid, seid=oid, only_sql=True)
|
||||||
|
elif diff_schema:
|
||||||
|
sql = self.sql(gid=gid, sid=sid, did=did, scid=scid, seid=oid,
|
||||||
|
diff_schema=diff_schema, json_resp=False)
|
||||||
|
else:
|
||||||
|
sql = self.sql(gid=gid, sid=sid, did=did, scid=scid, seid=oid,
|
||||||
|
json_resp=False)
|
||||||
|
return sql
|
||||||
|
|
||||||
|
|
||||||
|
SchemaDiffRegistry(blueprint.node_type, SequenceView)
|
||||||
SequenceView.register_node_view(blueprint)
|
SequenceView.register_node_view(blueprint)
|
||||||
|
@ -483,7 +483,7 @@ class SynonymView(PGChildNodeView, SchemaDiffObjectCompare):
|
|||||||
return internal_server_error(errormsg=str(e))
|
return internal_server_error(errormsg=str(e))
|
||||||
|
|
||||||
@check_precondition
|
@check_precondition
|
||||||
def delete(self, gid, sid, did, scid, syid=None):
|
def delete(self, gid, sid, did, scid, syid=None, only_sql=False):
|
||||||
"""
|
"""
|
||||||
This function will delete existing the synonym object
|
This function will delete existing the synonym object
|
||||||
|
|
||||||
@ -493,6 +493,7 @@ class SynonymView(PGChildNodeView, SchemaDiffObjectCompare):
|
|||||||
did: Database ID
|
did: Database ID
|
||||||
scid: Schema ID
|
scid: Schema ID
|
||||||
syid: Synonym ID
|
syid: Synonym ID
|
||||||
|
only_sql: Return SQL only if True
|
||||||
"""
|
"""
|
||||||
if syid is None:
|
if syid is None:
|
||||||
data = request.form if request.form else json.loads(
|
data = request.form if request.form else json.loads(
|
||||||
@ -525,6 +526,9 @@ class SynonymView(PGChildNodeView, SchemaDiffObjectCompare):
|
|||||||
'delete.sql']),
|
'delete.sql']),
|
||||||
data=data,
|
data=data,
|
||||||
conn=self.conn)
|
conn=self.conn)
|
||||||
|
if only_sql:
|
||||||
|
return SQL
|
||||||
|
|
||||||
status, res = self.conn.execute_scalar(SQL)
|
status, res = self.conn.execute_scalar(SQL)
|
||||||
if not status:
|
if not status:
|
||||||
return internal_server_error(errormsg=res)
|
return internal_server_error(errormsg=res)
|
||||||
@ -648,7 +652,8 @@ class SynonymView(PGChildNodeView, SchemaDiffObjectCompare):
|
|||||||
return SQL.strip('\n')
|
return SQL.strip('\n')
|
||||||
|
|
||||||
@check_precondition
|
@check_precondition
|
||||||
def sql(self, gid, sid, did, scid, syid):
|
def sql(self, gid, sid, did, scid, syid, diff_schema=None,
|
||||||
|
json_resp=True):
|
||||||
"""
|
"""
|
||||||
This function will generates reverse engineered sql for synonym object
|
This function will generates reverse engineered sql for synonym object
|
||||||
|
|
||||||
@ -658,6 +663,8 @@ class SynonymView(PGChildNodeView, SchemaDiffObjectCompare):
|
|||||||
did: Database ID
|
did: Database ID
|
||||||
scid: Schema ID
|
scid: Schema ID
|
||||||
syid: Synonym ID
|
syid: Synonym ID
|
||||||
|
diff_schema:
|
||||||
|
json_resp:
|
||||||
"""
|
"""
|
||||||
SQL = render_template("/".join([self.template_path,
|
SQL = render_template("/".join([self.template_path,
|
||||||
'properties.sql']),
|
'properties.sql']),
|
||||||
@ -673,9 +680,14 @@ class SynonymView(PGChildNodeView, SchemaDiffObjectCompare):
|
|||||||
gettext('The specified synonym could not be found.')
|
gettext('The specified synonym could not be found.')
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if diff_schema:
|
||||||
|
data['schema'] = diff_schema
|
||||||
|
|
||||||
SQL = render_template("/".join([self.template_path,
|
SQL = render_template("/".join([self.template_path,
|
||||||
'create.sql']),
|
'create.sql']),
|
||||||
data=data, conn=self.conn, comment=True)
|
data=data, conn=self.conn, comment=True)
|
||||||
|
if not json_resp:
|
||||||
|
return SQL
|
||||||
|
|
||||||
return ajax_response(response=SQL)
|
return ajax_response(response=SQL)
|
||||||
|
|
||||||
@ -751,5 +763,38 @@ class SynonymView(PGChildNodeView, SchemaDiffObjectCompare):
|
|||||||
|
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
def get_sql_from_diff(self, gid, sid, did, scid, oid, data=None,
|
||||||
|
diff_schema=None, drop_sql=False):
|
||||||
|
"""
|
||||||
|
This function is used to get the DDL/DML statements.
|
||||||
|
:param gid: Group ID
|
||||||
|
:param sid: Serve ID
|
||||||
|
:param did: Database ID
|
||||||
|
:param scid: Schema ID
|
||||||
|
:param oid: Synonyms ID
|
||||||
|
:param data: Difference data
|
||||||
|
:param diff_schema: Target Schema
|
||||||
|
:param drop_sql: True if need to drop the domains
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
sql = ''
|
||||||
|
if data:
|
||||||
|
if diff_schema:
|
||||||
|
data['schema'] = diff_schema
|
||||||
|
sql = self.get_sql(gid, sid, data, scid, oid)
|
||||||
|
else:
|
||||||
|
if drop_sql:
|
||||||
|
sql = self.delete(gid=gid, sid=sid, did=did,
|
||||||
|
scid=scid, syid=oid, only_sql=True)
|
||||||
|
|
||||||
|
elif diff_schema:
|
||||||
|
sql = self.sql(gid=gid, sid=sid, did=did, scid=scid, syid=oid,
|
||||||
|
diff_schema=diff_schema, json_resp=False)
|
||||||
|
else:
|
||||||
|
sql = self.sql(gid=gid, sid=sid, did=did, scid=scid, syid=oid,
|
||||||
|
json_resp=False)
|
||||||
|
return sql
|
||||||
|
|
||||||
|
|
||||||
|
SchemaDiffRegistry(blueprint.node_type, SynonymView)
|
||||||
SynonymView.register_node_view(blueprint)
|
SynonymView.register_node_view(blueprint)
|
||||||
|
@ -155,6 +155,8 @@ define('pgadmin.node.synonym', [
|
|||||||
var trgSchema = control.model.get('synobjschema');
|
var trgSchema = control.model.get('synobjschema');
|
||||||
var res = [];
|
var res = [];
|
||||||
|
|
||||||
|
control.model.set('synobjname', undefined);
|
||||||
|
|
||||||
var node = control.field.get('schema_node'),
|
var node = control.field.get('schema_node'),
|
||||||
_url = node.generate_url.apply(
|
_url = node.generate_url.apply(
|
||||||
node, [
|
node, [
|
||||||
|
@ -4,5 +4,4 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
DROP {% if is_public %}
|
DROP {% if is_public %}
|
||||||
PUBLIC SYNONYM {{ conn|qtIdent(data.name) }}{% else %}
|
PUBLIC SYNONYM {{ conn|qtIdent(data.name) }}{% else %}
|
||||||
SYNONYM {{ conn|qtIdent(data.schema, data.name) }}
|
SYNONYM {{ conn|qtIdent(data.schema, data.name) }}{% endif %};
|
||||||
{% endif %};
|
|
||||||
|
@ -50,9 +50,16 @@ def compare_dictionaries(view_object, source_params, target_params,
|
|||||||
added = dict1_keys - dict2_keys
|
added = dict1_keys - dict2_keys
|
||||||
global count
|
global count
|
||||||
for item in added:
|
for item in added:
|
||||||
|
source_object_id = None
|
||||||
|
if 'oid' in source_dict[item]:
|
||||||
|
source_object_id = source_dict[item]['oid']
|
||||||
|
elif 'name' in source_dict[item]:
|
||||||
|
# For synonyms use name as OID
|
||||||
|
source_object_id = source_dict[item]['name']
|
||||||
|
|
||||||
if node == 'table':
|
if node == 'table':
|
||||||
temp_src_params = copy.deepcopy(source_params)
|
temp_src_params = copy.deepcopy(source_params)
|
||||||
temp_src_params['tid'] = source_dict[item]['oid']
|
temp_src_params['tid'] = source_object_id
|
||||||
temp_src_params['json_resp'] = False
|
temp_src_params['json_resp'] = False
|
||||||
source_ddl = \
|
source_ddl = \
|
||||||
view_object.get_sql_from_table_diff(**temp_src_params)
|
view_object.get_sql_from_table_diff(**temp_src_params)
|
||||||
@ -62,7 +69,7 @@ def compare_dictionaries(view_object, source_params, target_params,
|
|||||||
diff_ddl = view_object.get_sql_from_table_diff(**temp_src_params)
|
diff_ddl = view_object.get_sql_from_table_diff(**temp_src_params)
|
||||||
else:
|
else:
|
||||||
temp_src_params = copy.deepcopy(source_params)
|
temp_src_params = copy.deepcopy(source_params)
|
||||||
temp_src_params['oid'] = source_dict[item]['oid']
|
temp_src_params['oid'] = source_object_id
|
||||||
source_ddl = view_object.get_sql_from_diff(**temp_src_params)
|
source_ddl = view_object.get_sql_from_diff(**temp_src_params)
|
||||||
temp_src_params.update({
|
temp_src_params.update({
|
||||||
'diff_schema': target_schema
|
'diff_schema': target_schema
|
||||||
@ -74,7 +81,7 @@ def compare_dictionaries(view_object, source_params, target_params,
|
|||||||
'type': node,
|
'type': node,
|
||||||
'label': node_label,
|
'label': node_label,
|
||||||
'title': item,
|
'title': item,
|
||||||
'oid': source_dict[item]['oid'],
|
'oid': source_object_id,
|
||||||
'status': SchemaDiffModel.COMPARISON_STATUS['source_only'],
|
'status': SchemaDiffModel.COMPARISON_STATUS['source_only'],
|
||||||
'source_ddl': source_ddl,
|
'source_ddl': source_ddl,
|
||||||
'target_ddl': '',
|
'target_ddl': '',
|
||||||
@ -86,9 +93,16 @@ def compare_dictionaries(view_object, source_params, target_params,
|
|||||||
# Keys that are available in target and missing in source.
|
# Keys that are available in target and missing in source.
|
||||||
removed = dict2_keys - dict1_keys
|
removed = dict2_keys - dict1_keys
|
||||||
for item in removed:
|
for item in removed:
|
||||||
|
target_object_id = None
|
||||||
|
if 'oid' in target_dict[item]:
|
||||||
|
target_object_id = target_dict[item]['oid']
|
||||||
|
elif 'name' in target_dict[item]:
|
||||||
|
# For synonyms use name as OID
|
||||||
|
target_object_id = target_dict[item]['name']
|
||||||
|
|
||||||
if node == 'table':
|
if node == 'table':
|
||||||
temp_tgt_params = copy.deepcopy(target_params)
|
temp_tgt_params = copy.deepcopy(target_params)
|
||||||
temp_tgt_params['tid'] = target_dict[item]['oid']
|
temp_tgt_params['tid'] = target_object_id
|
||||||
temp_tgt_params['json_resp'] = False
|
temp_tgt_params['json_resp'] = False
|
||||||
target_ddl = view_object.get_sql_from_table_diff(**temp_tgt_params)
|
target_ddl = view_object.get_sql_from_table_diff(**temp_tgt_params)
|
||||||
if 'gid' in temp_tgt_params:
|
if 'gid' in temp_tgt_params:
|
||||||
@ -98,7 +112,7 @@ def compare_dictionaries(view_object, source_params, target_params,
|
|||||||
diff_ddl = view_object.get_drop_sql(**temp_tgt_params)
|
diff_ddl = view_object.get_drop_sql(**temp_tgt_params)
|
||||||
else:
|
else:
|
||||||
temp_tgt_params = copy.deepcopy(target_params)
|
temp_tgt_params = copy.deepcopy(target_params)
|
||||||
temp_tgt_params['oid'] = target_dict[item]['oid']
|
temp_tgt_params['oid'] = target_object_id
|
||||||
target_ddl = view_object.get_sql_from_diff(**temp_tgt_params)
|
target_ddl = view_object.get_sql_from_diff(**temp_tgt_params)
|
||||||
temp_tgt_params.update(
|
temp_tgt_params.update(
|
||||||
{'drop_sql': True})
|
{'drop_sql': True})
|
||||||
@ -109,7 +123,7 @@ def compare_dictionaries(view_object, source_params, target_params,
|
|||||||
'type': node,
|
'type': node,
|
||||||
'label': node_label,
|
'label': node_label,
|
||||||
'title': item,
|
'title': item,
|
||||||
'oid': target_dict[item]['oid'],
|
'oid': target_object_id,
|
||||||
'status': SchemaDiffModel.COMPARISON_STATUS['target_only'],
|
'status': SchemaDiffModel.COMPARISON_STATUS['target_only'],
|
||||||
'source_ddl': '',
|
'source_ddl': '',
|
||||||
'target_ddl': target_ddl,
|
'target_ddl': target_ddl,
|
||||||
@ -121,6 +135,16 @@ def compare_dictionaries(view_object, source_params, target_params,
|
|||||||
identical = []
|
identical = []
|
||||||
different = []
|
different = []
|
||||||
for key in intersect_keys:
|
for key in intersect_keys:
|
||||||
|
source_object_id = None
|
||||||
|
target_object_id = None
|
||||||
|
if 'oid' in source_dict[key]:
|
||||||
|
source_object_id = source_dict[key]['oid']
|
||||||
|
target_object_id = target_dict[key]['oid']
|
||||||
|
elif 'name' in target_dict[key]:
|
||||||
|
# For synonyms use name as OID
|
||||||
|
source_object_id = source_dict[key]['name']
|
||||||
|
target_object_id = target_dict[key]['name']
|
||||||
|
|
||||||
# Recursively Compare the two dictionary
|
# Recursively Compare the two dictionary
|
||||||
if are_dictionaries_identical(dict1[key], dict2[key], ignore_keys):
|
if are_dictionaries_identical(dict1[key], dict2[key], ignore_keys):
|
||||||
identical.append({
|
identical.append({
|
||||||
@ -128,9 +152,9 @@ def compare_dictionaries(view_object, source_params, target_params,
|
|||||||
'type': node,
|
'type': node,
|
||||||
'label': node_label,
|
'label': node_label,
|
||||||
'title': key,
|
'title': key,
|
||||||
'oid': source_dict[key]['oid'],
|
'oid': source_object_id,
|
||||||
'source_oid': source_dict[key]['oid'],
|
'source_oid': source_object_id,
|
||||||
'target_oid': target_dict[key]['oid'],
|
'target_oid': target_object_id,
|
||||||
'status': SchemaDiffModel.COMPARISON_STATUS['identical']
|
'status': SchemaDiffModel.COMPARISON_STATUS['identical']
|
||||||
})
|
})
|
||||||
else:
|
else:
|
||||||
@ -149,8 +173,8 @@ def compare_dictionaries(view_object, source_params, target_params,
|
|||||||
)
|
)
|
||||||
diff_dict.update(parce_acl(dict1[key], dict2[key]))
|
diff_dict.update(parce_acl(dict1[key], dict2[key]))
|
||||||
|
|
||||||
temp_src_params['tid'] = source_dict[key]['oid']
|
temp_src_params['tid'] = source_object_id
|
||||||
temp_tgt_params['tid'] = target_dict[key]['oid']
|
temp_tgt_params['tid'] = target_object_id
|
||||||
temp_src_params['json_resp'] = \
|
temp_src_params['json_resp'] = \
|
||||||
temp_tgt_params['json_resp'] = False
|
temp_tgt_params['json_resp'] = False
|
||||||
|
|
||||||
@ -170,8 +194,8 @@ def compare_dictionaries(view_object, source_params, target_params,
|
|||||||
)
|
)
|
||||||
diff_dict.update(parce_acl(dict1[key], dict2[key]))
|
diff_dict.update(parce_acl(dict1[key], dict2[key]))
|
||||||
|
|
||||||
temp_src_params['oid'] = source_dict[key]['oid']
|
temp_src_params['oid'] = source_object_id
|
||||||
temp_tgt_params['oid'] = target_dict[key]['oid']
|
temp_tgt_params['oid'] = target_object_id
|
||||||
source_ddl = view_object.get_sql_from_diff(**temp_src_params)
|
source_ddl = view_object.get_sql_from_diff(**temp_src_params)
|
||||||
target_ddl = view_object.get_sql_from_diff(**temp_tgt_params)
|
target_ddl = view_object.get_sql_from_diff(**temp_tgt_params)
|
||||||
temp_tgt_params.update(
|
temp_tgt_params.update(
|
||||||
@ -183,9 +207,9 @@ def compare_dictionaries(view_object, source_params, target_params,
|
|||||||
'type': node,
|
'type': node,
|
||||||
'label': node_label,
|
'label': node_label,
|
||||||
'title': key,
|
'title': key,
|
||||||
'oid': source_dict[key]['oid'],
|
'oid': source_object_id,
|
||||||
'source_oid': source_dict[key]['oid'],
|
'source_oid': source_object_id,
|
||||||
'target_oid': target_dict[key]['oid'],
|
'target_oid': target_object_id,
|
||||||
'status': SchemaDiffModel.COMPARISON_STATUS['different'],
|
'status': SchemaDiffModel.COMPARISON_STATUS['different'],
|
||||||
'source_ddl': source_ddl,
|
'source_ddl': source_ddl,
|
||||||
'target_ddl': target_ddl,
|
'target_ddl': target_ddl,
|
||||||
@ -403,14 +427,22 @@ def is_key_exists(key_list, target_dict):
|
|||||||
|
|
||||||
|
|
||||||
def parce_acl(source, target):
|
def parce_acl(source, target):
|
||||||
key = 'acl'
|
"""
|
||||||
|
This function is used to parse acl.
|
||||||
|
|
||||||
if 'datacl' in source:
|
:param source:
|
||||||
key = 'datacl'
|
:param target:
|
||||||
elif 'relacl' in source:
|
:return:
|
||||||
key = 'relacl'
|
"""
|
||||||
elif 'typacl' in source:
|
acl_keys = ['datacl', 'relacl', 'typacl', 'pkgacl']
|
||||||
key = 'typacl'
|
key = is_key_exists(acl_keys, source)
|
||||||
|
|
||||||
|
# If key is not found in source then check the key is available
|
||||||
|
# in target.
|
||||||
|
if key is None:
|
||||||
|
key = is_key_exists(acl_keys, target)
|
||||||
|
if key is None:
|
||||||
|
key = 'acl'
|
||||||
|
|
||||||
tmp_source = source[key] if\
|
tmp_source = source[key] if\
|
||||||
key in source and source[key] is not None else []
|
key in source and source[key] is not None else []
|
||||||
|
@ -688,3 +688,50 @@ CREATE TYPE source.typ_enum_range_diff AS ENUM
|
|||||||
('test_enum', 'test_enum_1');
|
('test_enum', 'test_enum_1');
|
||||||
ALTER TYPE source.typ_enum_range_diff
|
ALTER TYPE source.typ_enum_range_diff
|
||||||
OWNER TO postgres;
|
OWNER TO postgres;
|
||||||
|
|
||||||
|
-- Sequences Script
|
||||||
|
CREATE SEQUENCE source.seq_src
|
||||||
|
CYCLE
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 3
|
||||||
|
CACHE 6;
|
||||||
|
ALTER SEQUENCE source.seq_src
|
||||||
|
OWNER TO postgres;
|
||||||
|
COMMENT ON SEQUENCE source.seq_src
|
||||||
|
IS 'Test Comment';
|
||||||
|
GRANT ALL ON SEQUENCE source.seq_src TO PUBLIC;
|
||||||
|
GRANT ALL ON SEQUENCE source.seq_src TO postgres;
|
||||||
|
|
||||||
|
CREATE SEQUENCE source.seq_diff_comment_acl
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 9223372036854775807
|
||||||
|
CACHE 1;
|
||||||
|
ALTER SEQUENCE source.seq_diff_comment_acl
|
||||||
|
OWNER TO postgres;
|
||||||
|
COMMENT ON SEQUENCE source.seq_diff_comment_acl
|
||||||
|
IS 'Test Comment';
|
||||||
|
GRANT ALL ON SEQUENCE source.seq_diff_comment_acl TO PUBLIC;
|
||||||
|
GRANT ALL ON SEQUENCE source.seq_diff_comment_acl TO postgres;
|
||||||
|
|
||||||
|
CREATE SEQUENCE source.seq_diff_comment_acl_remove
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 9223372036854775807
|
||||||
|
CACHE 1;
|
||||||
|
ALTER SEQUENCE source.seq_diff_comment_acl_remove
|
||||||
|
OWNER TO postgres;
|
||||||
|
|
||||||
|
CREATE SEQUENCE source.seq_diff
|
||||||
|
CYCLE
|
||||||
|
INCREMENT 3
|
||||||
|
START 3
|
||||||
|
MINVALUE 3
|
||||||
|
MAXVALUE 100
|
||||||
|
CACHE 2;
|
||||||
|
ALTER SEQUENCE source.seq_diff
|
||||||
|
OWNER TO postgres;
|
||||||
|
@ -642,3 +642,47 @@ CREATE TYPE target.typ_enum_range_diff AS RANGE
|
|||||||
);
|
);
|
||||||
ALTER TYPE target.typ_enum_range_diff
|
ALTER TYPE target.typ_enum_range_diff
|
||||||
OWNER TO postgres;
|
OWNER TO postgres;
|
||||||
|
|
||||||
|
-- Sequences Script
|
||||||
|
CREATE SEQUENCE target.seq_tar
|
||||||
|
CYCLE
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 3
|
||||||
|
CACHE 6;
|
||||||
|
ALTER SEQUENCE target.seq_tar
|
||||||
|
OWNER TO postgres;
|
||||||
|
|
||||||
|
CREATE SEQUENCE target.seq_diff_comment_acl
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 9223372036854775807
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
ALTER SEQUENCE target.seq_diff_comment_acl
|
||||||
|
OWNER TO postgres;
|
||||||
|
|
||||||
|
CREATE SEQUENCE target.seq_diff_comment_acl_remove
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 9223372036854775807
|
||||||
|
CACHE 1;
|
||||||
|
ALTER SEQUENCE target.seq_diff_comment_acl_remove
|
||||||
|
OWNER TO postgres;
|
||||||
|
COMMENT ON SEQUENCE target.seq_diff_comment_acl_remove
|
||||||
|
IS 'Test Comment';
|
||||||
|
GRANT ALL ON SEQUENCE target.seq_diff_comment_acl_remove TO PUBLIC;
|
||||||
|
GRANT ALL ON SEQUENCE target.seq_diff_comment_acl_remove TO postgres;
|
||||||
|
|
||||||
|
CREATE SEQUENCE target.seq_diff
|
||||||
|
INCREMENT 5
|
||||||
|
START 3
|
||||||
|
MINVALUE 3
|
||||||
|
MAXVALUE 80
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
ALTER SEQUENCE target.seq_diff
|
||||||
|
OWNER TO postgres;
|
||||||
|
@ -651,3 +651,50 @@ CREATE TYPE source.typ_enum_range_diff AS ENUM
|
|||||||
('test_enum', 'test_enum_1');
|
('test_enum', 'test_enum_1');
|
||||||
ALTER TYPE source.typ_enum_range_diff
|
ALTER TYPE source.typ_enum_range_diff
|
||||||
OWNER TO postgres;
|
OWNER TO postgres;
|
||||||
|
|
||||||
|
-- Sequences Script
|
||||||
|
CREATE SEQUENCE source.seq_src
|
||||||
|
CYCLE
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 3
|
||||||
|
CACHE 6;
|
||||||
|
ALTER SEQUENCE source.seq_src
|
||||||
|
OWNER TO postgres;
|
||||||
|
COMMENT ON SEQUENCE source.seq_src
|
||||||
|
IS 'Test Comment';
|
||||||
|
GRANT ALL ON SEQUENCE source.seq_src TO PUBLIC;
|
||||||
|
GRANT ALL ON SEQUENCE source.seq_src TO postgres;
|
||||||
|
|
||||||
|
CREATE SEQUENCE source.seq_diff_comment_acl
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 9223372036854775807
|
||||||
|
CACHE 1;
|
||||||
|
ALTER SEQUENCE source.seq_diff_comment_acl
|
||||||
|
OWNER TO postgres;
|
||||||
|
COMMENT ON SEQUENCE source.seq_diff_comment_acl
|
||||||
|
IS 'Test Comment';
|
||||||
|
GRANT ALL ON SEQUENCE source.seq_diff_comment_acl TO PUBLIC;
|
||||||
|
GRANT ALL ON SEQUENCE source.seq_diff_comment_acl TO postgres;
|
||||||
|
|
||||||
|
CREATE SEQUENCE source.seq_diff_comment_acl_remove
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 9223372036854775807
|
||||||
|
CACHE 1;
|
||||||
|
ALTER SEQUENCE source.seq_diff_comment_acl_remove
|
||||||
|
OWNER TO postgres;
|
||||||
|
|
||||||
|
CREATE SEQUENCE source.seq_diff
|
||||||
|
CYCLE
|
||||||
|
INCREMENT 3
|
||||||
|
START 3
|
||||||
|
MINVALUE 3
|
||||||
|
MAXVALUE 100
|
||||||
|
CACHE 2;
|
||||||
|
ALTER SEQUENCE source.seq_diff
|
||||||
|
OWNER TO postgres;
|
||||||
|
@ -641,3 +641,47 @@ CREATE TYPE target.typ_enum_range_diff AS RANGE
|
|||||||
);
|
);
|
||||||
ALTER TYPE target.typ_enum_range_diff
|
ALTER TYPE target.typ_enum_range_diff
|
||||||
OWNER TO postgres;
|
OWNER TO postgres;
|
||||||
|
|
||||||
|
-- Sequences Script
|
||||||
|
CREATE SEQUENCE target.seq_tar
|
||||||
|
CYCLE
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 3
|
||||||
|
CACHE 6;
|
||||||
|
ALTER SEQUENCE target.seq_tar
|
||||||
|
OWNER TO postgres;
|
||||||
|
|
||||||
|
CREATE SEQUENCE target.seq_diff_comment_acl
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 9223372036854775807
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
ALTER SEQUENCE target.seq_diff_comment_acl
|
||||||
|
OWNER TO postgres;
|
||||||
|
|
||||||
|
CREATE SEQUENCE target.seq_diff_comment_acl_remove
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 9223372036854775807
|
||||||
|
CACHE 1;
|
||||||
|
ALTER SEQUENCE target.seq_diff_comment_acl_remove
|
||||||
|
OWNER TO postgres;
|
||||||
|
COMMENT ON SEQUENCE target.seq_diff_comment_acl_remove
|
||||||
|
IS 'Test Comment';
|
||||||
|
GRANT ALL ON SEQUENCE target.seq_diff_comment_acl_remove TO PUBLIC;
|
||||||
|
GRANT ALL ON SEQUENCE target.seq_diff_comment_acl_remove TO postgres;
|
||||||
|
|
||||||
|
CREATE SEQUENCE target.seq_diff
|
||||||
|
INCREMENT 5
|
||||||
|
START 3
|
||||||
|
MINVALUE 3
|
||||||
|
MAXVALUE 80
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
ALTER SEQUENCE target.seq_diff
|
||||||
|
OWNER TO postgres;
|
||||||
|
@ -652,3 +652,50 @@ CREATE TYPE source.typ_enum_range_diff AS ENUM
|
|||||||
('test_enum', 'test_enum_1');
|
('test_enum', 'test_enum_1');
|
||||||
ALTER TYPE source.typ_enum_range_diff
|
ALTER TYPE source.typ_enum_range_diff
|
||||||
OWNER TO postgres;
|
OWNER TO postgres;
|
||||||
|
|
||||||
|
-- Sequences Script
|
||||||
|
CREATE SEQUENCE source.seq_src
|
||||||
|
CYCLE
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 3
|
||||||
|
CACHE 6;
|
||||||
|
ALTER SEQUENCE source.seq_src
|
||||||
|
OWNER TO postgres;
|
||||||
|
COMMENT ON SEQUENCE source.seq_src
|
||||||
|
IS 'Test Comment';
|
||||||
|
GRANT ALL ON SEQUENCE source.seq_src TO PUBLIC;
|
||||||
|
GRANT ALL ON SEQUENCE source.seq_src TO postgres;
|
||||||
|
|
||||||
|
CREATE SEQUENCE source.seq_diff_comment_acl
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 9223372036854775807
|
||||||
|
CACHE 1;
|
||||||
|
ALTER SEQUENCE source.seq_diff_comment_acl
|
||||||
|
OWNER TO postgres;
|
||||||
|
COMMENT ON SEQUENCE source.seq_diff_comment_acl
|
||||||
|
IS 'Test Comment';
|
||||||
|
GRANT ALL ON SEQUENCE source.seq_diff_comment_acl TO PUBLIC;
|
||||||
|
GRANT ALL ON SEQUENCE source.seq_diff_comment_acl TO postgres;
|
||||||
|
|
||||||
|
CREATE SEQUENCE source.seq_diff_comment_acl_remove
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 9223372036854775807
|
||||||
|
CACHE 1;
|
||||||
|
ALTER SEQUENCE source.seq_diff_comment_acl_remove
|
||||||
|
OWNER TO postgres;
|
||||||
|
|
||||||
|
CREATE SEQUENCE source.seq_diff
|
||||||
|
CYCLE
|
||||||
|
INCREMENT 3
|
||||||
|
START 3
|
||||||
|
MINVALUE 3
|
||||||
|
MAXVALUE 100
|
||||||
|
CACHE 2;
|
||||||
|
ALTER SEQUENCE source.seq_diff
|
||||||
|
OWNER TO postgres;
|
||||||
|
@ -630,3 +630,47 @@ CREATE TYPE target.typ_enum_range_diff AS RANGE
|
|||||||
);
|
);
|
||||||
ALTER TYPE target.typ_enum_range_diff
|
ALTER TYPE target.typ_enum_range_diff
|
||||||
OWNER TO postgres;
|
OWNER TO postgres;
|
||||||
|
|
||||||
|
-- Sequences Script
|
||||||
|
CREATE SEQUENCE target.seq_tar
|
||||||
|
CYCLE
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 3
|
||||||
|
CACHE 6;
|
||||||
|
ALTER SEQUENCE target.seq_tar
|
||||||
|
OWNER TO postgres;
|
||||||
|
|
||||||
|
CREATE SEQUENCE target.seq_diff_comment_acl
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 9223372036854775807
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
ALTER SEQUENCE target.seq_diff_comment_acl
|
||||||
|
OWNER TO postgres;
|
||||||
|
|
||||||
|
CREATE SEQUENCE target.seq_diff_comment_acl_remove
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 9223372036854775807
|
||||||
|
CACHE 1;
|
||||||
|
ALTER SEQUENCE target.seq_diff_comment_acl_remove
|
||||||
|
OWNER TO postgres;
|
||||||
|
COMMENT ON SEQUENCE target.seq_diff_comment_acl_remove
|
||||||
|
IS 'Test Comment';
|
||||||
|
GRANT ALL ON SEQUENCE target.seq_diff_comment_acl_remove TO PUBLIC;
|
||||||
|
GRANT ALL ON SEQUENCE target.seq_diff_comment_acl_remove TO postgres;
|
||||||
|
|
||||||
|
CREATE SEQUENCE target.seq_diff
|
||||||
|
INCREMENT 5
|
||||||
|
START 3
|
||||||
|
MINVALUE 3
|
||||||
|
MAXVALUE 80
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
ALTER SEQUENCE target.seq_diff
|
||||||
|
OWNER TO postgres;
|
||||||
|
@ -521,3 +521,50 @@ CREATE TYPE source.typ_enum_range_diff AS ENUM
|
|||||||
('test_enum', 'test_enum_1');
|
('test_enum', 'test_enum_1');
|
||||||
ALTER TYPE source.typ_enum_range_diff
|
ALTER TYPE source.typ_enum_range_diff
|
||||||
OWNER TO postgres;
|
OWNER TO postgres;
|
||||||
|
|
||||||
|
-- Sequences Script
|
||||||
|
CREATE SEQUENCE source.seq_src
|
||||||
|
CYCLE
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 3
|
||||||
|
CACHE 6;
|
||||||
|
ALTER SEQUENCE source.seq_src
|
||||||
|
OWNER TO postgres;
|
||||||
|
COMMENT ON SEQUENCE source.seq_src
|
||||||
|
IS 'Test Comment';
|
||||||
|
GRANT ALL ON SEQUENCE source.seq_src TO PUBLIC;
|
||||||
|
GRANT ALL ON SEQUENCE source.seq_src TO postgres;
|
||||||
|
|
||||||
|
CREATE SEQUENCE source.seq_diff_comment_acl
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 9223372036854775807
|
||||||
|
CACHE 1;
|
||||||
|
ALTER SEQUENCE source.seq_diff_comment_acl
|
||||||
|
OWNER TO postgres;
|
||||||
|
COMMENT ON SEQUENCE source.seq_diff_comment_acl
|
||||||
|
IS 'Test Comment';
|
||||||
|
GRANT ALL ON SEQUENCE source.seq_diff_comment_acl TO PUBLIC;
|
||||||
|
GRANT ALL ON SEQUENCE source.seq_diff_comment_acl TO postgres;
|
||||||
|
|
||||||
|
CREATE SEQUENCE source.seq_diff_comment_acl_remove
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 9223372036854775807
|
||||||
|
CACHE 1;
|
||||||
|
ALTER SEQUENCE source.seq_diff_comment_acl_remove
|
||||||
|
OWNER TO postgres;
|
||||||
|
|
||||||
|
CREATE SEQUENCE source.seq_diff
|
||||||
|
CYCLE
|
||||||
|
INCREMENT 3
|
||||||
|
START 3
|
||||||
|
MINVALUE 3
|
||||||
|
MAXVALUE 100
|
||||||
|
CACHE 2;
|
||||||
|
ALTER SEQUENCE source.seq_diff
|
||||||
|
OWNER TO postgres;
|
||||||
|
@ -548,3 +548,47 @@ CREATE TYPE target.typ_enum_range_diff AS RANGE
|
|||||||
);
|
);
|
||||||
ALTER TYPE target.typ_enum_range_diff
|
ALTER TYPE target.typ_enum_range_diff
|
||||||
OWNER TO postgres;
|
OWNER TO postgres;
|
||||||
|
|
||||||
|
-- Sequences Script
|
||||||
|
CREATE SEQUENCE target.seq_tar
|
||||||
|
CYCLE
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 3
|
||||||
|
CACHE 6;
|
||||||
|
ALTER SEQUENCE target.seq_tar
|
||||||
|
OWNER TO postgres;
|
||||||
|
|
||||||
|
CREATE SEQUENCE target.seq_diff_comment_acl
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 9223372036854775807
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
ALTER SEQUENCE target.seq_diff_comment_acl
|
||||||
|
OWNER TO postgres;
|
||||||
|
|
||||||
|
CREATE SEQUENCE target.seq_diff_comment_acl_remove
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 9223372036854775807
|
||||||
|
CACHE 1;
|
||||||
|
ALTER SEQUENCE target.seq_diff_comment_acl_remove
|
||||||
|
OWNER TO postgres;
|
||||||
|
COMMENT ON SEQUENCE target.seq_diff_comment_acl_remove
|
||||||
|
IS 'Test Comment';
|
||||||
|
GRANT ALL ON SEQUENCE target.seq_diff_comment_acl_remove TO PUBLIC;
|
||||||
|
GRANT ALL ON SEQUENCE target.seq_diff_comment_acl_remove TO postgres;
|
||||||
|
|
||||||
|
CREATE SEQUENCE target.seq_diff
|
||||||
|
INCREMENT 5
|
||||||
|
START 3
|
||||||
|
MINVALUE 3
|
||||||
|
MAXVALUE 80
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
ALTER SEQUENCE target.seq_diff
|
||||||
|
OWNER TO postgres;
|
||||||
|
@ -588,3 +588,211 @@ CREATE TYPE source.typ_enum_range_diff AS ENUM
|
|||||||
('test_enum', 'test_enum_1');
|
('test_enum', 'test_enum_1');
|
||||||
ALTER TYPE source.typ_enum_range_diff
|
ALTER TYPE source.typ_enum_range_diff
|
||||||
OWNER TO enterprisedb;
|
OWNER TO enterprisedb;
|
||||||
|
|
||||||
|
-- Package script (source only)
|
||||||
|
CREATE OR REPLACE PACKAGE source.pkg_src
|
||||||
|
IS
|
||||||
|
FUNCTION get_dept_name(p_deptno numeric) RETURN character varying;
|
||||||
|
PROCEDURE hire_emp(p_empno numeric, p_ename character varying, p_job character varying, p_sal numeric, p_hiredate timestamp without time zone, p_comm numeric, p_mgr numeric, p_deptno numeric);
|
||||||
|
END pkg_src;
|
||||||
|
|
||||||
|
CREATE OR REPLACE PACKAGE BODY source.pkg_src
|
||||||
|
IS
|
||||||
|
FUNCTION get_dept_name(p_deptno numeric) RETURN character varying IS
|
||||||
|
v_dname VARCHAR2(14);
|
||||||
|
BEGIN
|
||||||
|
SELECT dname INTO v_dname FROM dept WHERE deptno = p_deptno;
|
||||||
|
RETURN v_dname;
|
||||||
|
EXCEPTION
|
||||||
|
WHEN NO_DATA_FOUND THEN
|
||||||
|
DBMS_OUTPUT.PUT_LINE('Invalid department number ' || p_deptno);
|
||||||
|
RETURN '';
|
||||||
|
END;
|
||||||
|
|
||||||
|
PROCEDURE hire_emp(p_empno numeric, p_ename character varying, p_job character varying, p_sal numeric, p_hiredate timestamp without time zone, p_comm numeric, p_mgr numeric, p_deptno numeric) IS
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO emp(empno, ename, job, sal, hiredate, comm, mgr, deptno)
|
||||||
|
VALUES(p_empno, p_ename, p_job, p_sal,
|
||||||
|
p_hiredate, p_comm, p_mgr, p_deptno);
|
||||||
|
END;
|
||||||
|
END pkg_src;
|
||||||
|
|
||||||
|
COMMENT ON PACKAGE source.pkg_src
|
||||||
|
IS 'Target';
|
||||||
|
|
||||||
|
-- Package script difference in header, acl and comment
|
||||||
|
CREATE OR REPLACE PACKAGE source.pkg_header_diff
|
||||||
|
IS
|
||||||
|
FUNCTION get_dept_name(p_deptno numeric) RETURN character varying;
|
||||||
|
PROCEDURE hire_emp(p_empno numeric, p_ename character varying, p_job character varying, p_sal numeric, p_hiredate timestamp without time zone, p_comm numeric, p_mgr numeric, p_deptno numeric);
|
||||||
|
END pkg_header_diff;
|
||||||
|
|
||||||
|
CREATE OR REPLACE PACKAGE BODY source.pkg_header_diff
|
||||||
|
IS
|
||||||
|
FUNCTION get_dept_name(p_deptno numeric) RETURN character varying IS
|
||||||
|
v_dname VARCHAR2(14);
|
||||||
|
BEGIN
|
||||||
|
SELECT dname INTO v_dname FROM dept WHERE deptno = p_deptno;
|
||||||
|
RETURN v_dname;
|
||||||
|
EXCEPTION
|
||||||
|
WHEN NO_DATA_FOUND THEN
|
||||||
|
DBMS_OUTPUT.PUT_LINE('Invalid department number ' || p_deptno);
|
||||||
|
RETURN '';
|
||||||
|
END;
|
||||||
|
|
||||||
|
PROCEDURE hire_emp(p_empno numeric, p_ename character varying, p_job character varying, p_sal numeric, p_hiredate timestamp without time zone, p_comm numeric, p_mgr numeric, p_deptno numeric) IS
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO emp(empno, ename, job, sal, hiredate, comm, mgr, deptno)
|
||||||
|
VALUES(p_empno, p_ename, p_job, p_sal,
|
||||||
|
p_hiredate, p_comm, p_mgr, p_deptno);
|
||||||
|
END;
|
||||||
|
END pkg_header_diff;
|
||||||
|
|
||||||
|
COMMENT ON PACKAGE source.pkg_header_diff
|
||||||
|
IS 'Header Diff';
|
||||||
|
|
||||||
|
GRANT EXECUTE ON PACKAGE source.pkg_header_diff TO PUBLIC;
|
||||||
|
GRANT EXECUTE ON PACKAGE source.pkg_header_diff TO enterprisedb WITH GRANT OPTION;
|
||||||
|
|
||||||
|
-- Package script difference in body, acl and comment
|
||||||
|
CREATE OR REPLACE PACKAGE source.pkg_body_diff
|
||||||
|
IS
|
||||||
|
PROCEDURE hire_emp(p_empno numeric, p_ename character varying, p_job character varying, p_sal numeric, p_hiredate timestamp without time zone, p_comm numeric, p_mgr numeric, p_deptno numeric);
|
||||||
|
END pkg_body_diff;
|
||||||
|
|
||||||
|
CREATE OR REPLACE PACKAGE BODY source.pkg_body_diff
|
||||||
|
IS
|
||||||
|
PROCEDURE hire_emp(p_empno numeric, p_ename character varying, p_job character varying, p_sal numeric, p_hiredate timestamp without time zone, p_comm numeric, p_mgr numeric, p_deptno numeric) IS
|
||||||
|
BEGIN
|
||||||
|
DBMS_OUTPUT.PUT_LINE('Before Insert ');
|
||||||
|
INSERT INTO emp(empno, ename, job, sal, hiredate, comm, mgr, deptno)
|
||||||
|
VALUES(p_empno, p_ename, p_job, p_sal,
|
||||||
|
p_hiredate, p_comm, p_mgr, p_deptno);
|
||||||
|
DBMS_OUTPUT.PUT_LINE('After Insert ');
|
||||||
|
END;
|
||||||
|
END pkg_body_diff;
|
||||||
|
|
||||||
|
-- Synonyms Scripts
|
||||||
|
-- Prerequisite for synonyms
|
||||||
|
CREATE OR REPLACE FUNCTION source.fun_for_syn()
|
||||||
|
RETURNS void
|
||||||
|
LANGUAGE 'plpgsql'
|
||||||
|
VOLATILE
|
||||||
|
COST 100
|
||||||
|
|
||||||
|
AS $BODY$BEGIN
|
||||||
|
SELECT 1;
|
||||||
|
END;$BODY$;
|
||||||
|
ALTER FUNCTION source.fun_for_syn()
|
||||||
|
OWNER TO enterprisedb;
|
||||||
|
|
||||||
|
CREATE OR REPLACE PROCEDURE source.proc_for_syn()
|
||||||
|
SECURITY DEFINER VOLATILE
|
||||||
|
COST 100
|
||||||
|
AS $BODY$BEGIN
|
||||||
|
SELECT 1;
|
||||||
|
END;$BODY$;
|
||||||
|
|
||||||
|
CREATE OR REPLACE PACKAGE source.pkg_for_syn
|
||||||
|
IS
|
||||||
|
FUNCTION get_dept_name(p_deptno numeric) RETURN character varying;
|
||||||
|
END pkg_for_syn;
|
||||||
|
CREATE OR REPLACE PACKAGE BODY source.pkg_for_syn
|
||||||
|
IS
|
||||||
|
FUNCTION get_dept_name(p_deptno numeric) RETURN character varying IS
|
||||||
|
BEGIN
|
||||||
|
RETURN '';
|
||||||
|
END;
|
||||||
|
END pkg_for_syn;
|
||||||
|
|
||||||
|
CREATE TABLE source.table_for_syn
|
||||||
|
(
|
||||||
|
id bigint,
|
||||||
|
name text COLLATE pg_catalog."default"
|
||||||
|
)
|
||||||
|
TABLESPACE pg_default;
|
||||||
|
ALTER TABLE source.table_for_syn
|
||||||
|
OWNER to enterprisedb;
|
||||||
|
|
||||||
|
CREATE SEQUENCE source.seq_for_syn
|
||||||
|
INCREMENT 5
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 100
|
||||||
|
CACHE 1;
|
||||||
|
ALTER SEQUENCE source.seq_for_syn
|
||||||
|
OWNER TO enterprisedb;
|
||||||
|
|
||||||
|
CREATE OR REPLACE SYNONYM source.syn_fun_src
|
||||||
|
FOR source.fun_for_syn;
|
||||||
|
|
||||||
|
CREATE OR REPLACE SYNONYM source.syn_pkg_src
|
||||||
|
FOR source.pkg_for_syn;
|
||||||
|
|
||||||
|
CREATE OR REPLACE SYNONYM source.syn_proc_src
|
||||||
|
FOR source.proc_for_syn;
|
||||||
|
|
||||||
|
CREATE OR REPLACE SYNONYM source.syn_seq_src
|
||||||
|
FOR source.seq_for_syn;
|
||||||
|
|
||||||
|
CREATE OR REPLACE SYNONYM source.syn_table_src
|
||||||
|
FOR source.table_for_syn;
|
||||||
|
|
||||||
|
CREATE TABLE public.table_for_syn
|
||||||
|
(
|
||||||
|
id bigint,
|
||||||
|
name text COLLATE pg_catalog."default"
|
||||||
|
)
|
||||||
|
TABLESPACE pg_default;
|
||||||
|
ALTER TABLE public.table_for_syn
|
||||||
|
OWNER to enterprisedb;
|
||||||
|
|
||||||
|
CREATE OR REPLACE SYNONYM source.syn_diff
|
||||||
|
FOR public.table_for_syn;
|
||||||
|
|
||||||
|
-- Sequences Script
|
||||||
|
CREATE SEQUENCE source.seq_src
|
||||||
|
CYCLE
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 3
|
||||||
|
CACHE 6;
|
||||||
|
ALTER SEQUENCE source.seq_src
|
||||||
|
OWNER TO enterprisedb;
|
||||||
|
COMMENT ON SEQUENCE source.seq_src
|
||||||
|
IS 'Test Comment';
|
||||||
|
GRANT ALL ON SEQUENCE source.seq_src TO PUBLIC;
|
||||||
|
GRANT ALL ON SEQUENCE source.seq_src TO enterprisedb;
|
||||||
|
|
||||||
|
CREATE SEQUENCE source.seq_diff_comment_acl
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 9223372036854775807
|
||||||
|
CACHE 1;
|
||||||
|
ALTER SEQUENCE source.seq_diff_comment_acl
|
||||||
|
OWNER TO enterprisedb;
|
||||||
|
COMMENT ON SEQUENCE source.seq_diff_comment_acl
|
||||||
|
IS 'Test Comment';
|
||||||
|
GRANT ALL ON SEQUENCE source.seq_diff_comment_acl TO PUBLIC;
|
||||||
|
GRANT ALL ON SEQUENCE source.seq_diff_comment_acl TO enterprisedb;
|
||||||
|
|
||||||
|
CREATE SEQUENCE source.seq_diff_comment_acl_remove
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 9223372036854775807
|
||||||
|
CACHE 1;
|
||||||
|
ALTER SEQUENCE source.seq_diff_comment_acl_remove
|
||||||
|
OWNER TO enterprisedb;
|
||||||
|
|
||||||
|
CREATE SEQUENCE source.seq_diff
|
||||||
|
CYCLE
|
||||||
|
INCREMENT 3
|
||||||
|
START 3
|
||||||
|
MINVALUE 3
|
||||||
|
MAXVALUE 100
|
||||||
|
CACHE 2;
|
||||||
|
ALTER SEQUENCE source.seq_diff
|
||||||
|
OWNER TO enterprisedb;
|
||||||
|
@ -578,3 +578,198 @@ CREATE TYPE target.typ_enum_range_diff AS RANGE
|
|||||||
ALTER TYPE target.typ_enum_range_diff
|
ALTER TYPE target.typ_enum_range_diff
|
||||||
OWNER TO enterprisedb;
|
OWNER TO enterprisedb;
|
||||||
|
|
||||||
|
-- Package script (target only)
|
||||||
|
CREATE OR REPLACE PACKAGE target.pkg_tar
|
||||||
|
IS
|
||||||
|
FUNCTION get_dept_name(p_deptno numeric) RETURN character varying;
|
||||||
|
PROCEDURE hire_emp(p_empno numeric, p_ename character varying, p_job character varying, p_sal numeric, p_hiredate timestamp without time zone, p_comm numeric, p_mgr numeric, p_deptno numeric);
|
||||||
|
END pkg_tar;
|
||||||
|
|
||||||
|
|
||||||
|
CREATE OR REPLACE PACKAGE BODY target.pkg_tar
|
||||||
|
IS
|
||||||
|
FUNCTION get_dept_name(p_deptno numeric) RETURN character varying IS
|
||||||
|
v_dname VARCHAR2(14);
|
||||||
|
BEGIN
|
||||||
|
SELECT dname INTO v_dname FROM dept WHERE deptno = p_deptno;
|
||||||
|
RETURN v_dname;
|
||||||
|
EXCEPTION
|
||||||
|
WHEN NO_DATA_FOUND THEN
|
||||||
|
DBMS_OUTPUT.PUT_LINE('Invalid department number ' || p_deptno);
|
||||||
|
RETURN '';
|
||||||
|
END;
|
||||||
|
|
||||||
|
PROCEDURE hire_emp(p_empno numeric, p_ename character varying, p_job character varying, p_sal numeric, p_hiredate timestamp without time zone, p_comm numeric, p_mgr numeric, p_deptno numeric) IS
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO emp(empno, ename, job, sal, hiredate, comm, mgr, deptno)
|
||||||
|
VALUES(p_empno, p_ename, p_job, p_sal,
|
||||||
|
p_hiredate, p_comm, p_mgr, p_deptno);
|
||||||
|
END;
|
||||||
|
END pkg_tar;
|
||||||
|
|
||||||
|
COMMENT ON PACKAGE target.pkg_tar
|
||||||
|
IS 'Target';
|
||||||
|
|
||||||
|
-- Package script difference in header, acl and comment
|
||||||
|
CREATE OR REPLACE PACKAGE target.pkg_header_diff
|
||||||
|
IS
|
||||||
|
FUNCTION get_dept_name(p_deptno numeric) RETURN character varying;
|
||||||
|
END pkg_header_diff;
|
||||||
|
|
||||||
|
CREATE OR REPLACE PACKAGE BODY target.pkg_header_diff
|
||||||
|
IS
|
||||||
|
FUNCTION get_dept_name(p_deptno numeric) RETURN character varying IS
|
||||||
|
v_dname VARCHAR2(14);
|
||||||
|
BEGIN
|
||||||
|
SELECT dname INTO v_dname FROM dept WHERE deptno = p_deptno;
|
||||||
|
RETURN v_dname;
|
||||||
|
EXCEPTION
|
||||||
|
WHEN NO_DATA_FOUND THEN
|
||||||
|
DBMS_OUTPUT.PUT_LINE('Invalid department number ' || p_deptno);
|
||||||
|
RETURN '';
|
||||||
|
END;
|
||||||
|
END pkg_header_diff;
|
||||||
|
|
||||||
|
-- Package script difference in body, acl and comment
|
||||||
|
CREATE OR REPLACE PACKAGE target.pkg_body_diff
|
||||||
|
IS
|
||||||
|
PROCEDURE hire_emp(p_empno numeric, p_ename character varying, p_job character varying, p_sal numeric, p_hiredate timestamp without time zone, p_comm numeric, p_mgr numeric, p_deptno numeric);
|
||||||
|
END pkg_body_diff;
|
||||||
|
|
||||||
|
CREATE OR REPLACE PACKAGE BODY target.pkg_body_diff
|
||||||
|
IS
|
||||||
|
PROCEDURE hire_emp(p_empno numeric, p_ename character varying, p_job character varying, p_sal numeric, p_hiredate timestamp without time zone, p_comm numeric, p_mgr numeric, p_deptno numeric) IS
|
||||||
|
BEGIN
|
||||||
|
DBMS_OUTPUT.PUT_LINE('Before Insert ');
|
||||||
|
INSERT INTO emp(empno, ename, job, sal, hiredate, comm, mgr, deptno)
|
||||||
|
VALUES(p_empno, p_ename, p_job, p_sal,
|
||||||
|
p_hiredate, p_comm, p_mgr, p_deptno);
|
||||||
|
DBMS_OUTPUT.PUT_LINE('After Insert ');
|
||||||
|
END;
|
||||||
|
END pkg_body_diff;
|
||||||
|
|
||||||
|
COMMENT ON PACKAGE target.pkg_body_diff
|
||||||
|
IS 'Header Diff';
|
||||||
|
|
||||||
|
GRANT EXECUTE ON PACKAGE target.pkg_body_diff TO PUBLIC;
|
||||||
|
GRANT EXECUTE ON PACKAGE target.pkg_body_diff TO enterprisedb WITH GRANT OPTION;
|
||||||
|
|
||||||
|
-- Synonyms Scripts
|
||||||
|
-- Prerequisite for synonyms
|
||||||
|
CREATE OR REPLACE FUNCTION target.fun_for_syn()
|
||||||
|
RETURNS void
|
||||||
|
LANGUAGE 'plpgsql'
|
||||||
|
VOLATILE
|
||||||
|
COST 100
|
||||||
|
|
||||||
|
AS $BODY$BEGIN
|
||||||
|
SELECT 1;
|
||||||
|
END;$BODY$;
|
||||||
|
ALTER FUNCTION target.fun_for_syn()
|
||||||
|
OWNER TO enterprisedb;
|
||||||
|
|
||||||
|
CREATE OR REPLACE PROCEDURE target.proc_for_syn()
|
||||||
|
SECURITY DEFINER VOLATILE
|
||||||
|
COST 100
|
||||||
|
AS $BODY$BEGIN
|
||||||
|
SELECT 1;
|
||||||
|
END;$BODY$;
|
||||||
|
|
||||||
|
CREATE OR REPLACE PACKAGE target.pkg_for_syn
|
||||||
|
IS
|
||||||
|
FUNCTION get_dept_name(p_deptno numeric) RETURN character varying;
|
||||||
|
END pkg_for_syn;
|
||||||
|
CREATE OR REPLACE PACKAGE BODY target.pkg_for_syn
|
||||||
|
IS
|
||||||
|
FUNCTION get_dept_name(p_deptno numeric) RETURN character varying IS
|
||||||
|
BEGIN
|
||||||
|
RETURN '';
|
||||||
|
END;
|
||||||
|
END pkg_for_syn;
|
||||||
|
|
||||||
|
CREATE TABLE target.table_for_syn
|
||||||
|
(
|
||||||
|
id bigint,
|
||||||
|
name text COLLATE pg_catalog."default"
|
||||||
|
)
|
||||||
|
TABLESPACE pg_default;
|
||||||
|
ALTER TABLE target.table_for_syn
|
||||||
|
OWNER to enterprisedb;
|
||||||
|
|
||||||
|
CREATE SEQUENCE target.seq_for_syn
|
||||||
|
INCREMENT 5
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 100
|
||||||
|
CACHE 1;
|
||||||
|
ALTER SEQUENCE target.seq_for_syn
|
||||||
|
OWNER TO enterprisedb;
|
||||||
|
|
||||||
|
CREATE OR REPLACE SYNONYM target.syn_fun_src
|
||||||
|
FOR target.fun_for_syn;
|
||||||
|
|
||||||
|
CREATE OR REPLACE SYNONYM target.syn_pkg_src
|
||||||
|
FOR target.pkg_for_syn;
|
||||||
|
|
||||||
|
CREATE OR REPLACE SYNONYM target.syn_proc_src
|
||||||
|
FOR target.proc_for_syn;
|
||||||
|
|
||||||
|
CREATE OR REPLACE SYNONYM target.syn_seq_src
|
||||||
|
FOR target.seq_for_syn;
|
||||||
|
|
||||||
|
CREATE OR REPLACE SYNONYM target.syn_table_src
|
||||||
|
FOR target.table_for_syn;
|
||||||
|
|
||||||
|
CREATE OR REPLACE PROCEDURE public.proc_for_syn()
|
||||||
|
SECURITY DEFINER VOLATILE
|
||||||
|
COST 100
|
||||||
|
AS $BODY$BEGIN
|
||||||
|
SELECT 1;
|
||||||
|
END;$BODY$;
|
||||||
|
|
||||||
|
CREATE OR REPLACE SYNONYM target.syn_diff
|
||||||
|
FOR public.proc_for_syn;
|
||||||
|
|
||||||
|
-- Sequences Script
|
||||||
|
CREATE SEQUENCE target.seq_tar
|
||||||
|
CYCLE
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 3
|
||||||
|
CACHE 6;
|
||||||
|
ALTER SEQUENCE target.seq_tar
|
||||||
|
OWNER TO enterprisedb;
|
||||||
|
|
||||||
|
CREATE SEQUENCE target.seq_diff_comment_acl
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 9223372036854775807
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
ALTER SEQUENCE target.seq_diff_comment_acl
|
||||||
|
OWNER TO enterprisedb;
|
||||||
|
|
||||||
|
CREATE SEQUENCE target.seq_diff_comment_acl_remove
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 9223372036854775807
|
||||||
|
CACHE 1;
|
||||||
|
ALTER SEQUENCE target.seq_diff_comment_acl_remove
|
||||||
|
OWNER TO enterprisedb;
|
||||||
|
COMMENT ON SEQUENCE target.seq_diff_comment_acl_remove
|
||||||
|
IS 'Test Comment';
|
||||||
|
GRANT ALL ON SEQUENCE target.seq_diff_comment_acl_remove TO PUBLIC;
|
||||||
|
GRANT ALL ON SEQUENCE target.seq_diff_comment_acl_remove TO enterprisedb;
|
||||||
|
|
||||||
|
CREATE SEQUENCE target.seq_diff
|
||||||
|
INCREMENT 5
|
||||||
|
START 3
|
||||||
|
MINVALUE 3
|
||||||
|
MAXVALUE 80
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
ALTER SEQUENCE target.seq_diff
|
||||||
|
OWNER TO enterprisedb;
|
||||||
|
@ -80,7 +80,7 @@ CREATE TABLE source.table_for_identical (
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
ALTER TABLE source.table_for_identical OWNER TO enterprisedb;;
|
ALTER TABLE source.table_for_identical OWNER TO enterprisedb;
|
||||||
|
|
||||||
--
|
--
|
||||||
-- TOC entry 12260 (class 1259 OID 148977)
|
-- TOC entry 12260 (class 1259 OID 148977)
|
||||||
@ -522,3 +522,209 @@ CREATE TYPE source.typ_enum_range_diff AS ENUM
|
|||||||
('test_enum', 'test_enum_1');
|
('test_enum', 'test_enum_1');
|
||||||
ALTER TYPE source.typ_enum_range_diff
|
ALTER TYPE source.typ_enum_range_diff
|
||||||
OWNER TO enterprisedb;
|
OWNER TO enterprisedb;
|
||||||
|
|
||||||
|
-- Package script (source only)
|
||||||
|
CREATE OR REPLACE PACKAGE source.pkg_src
|
||||||
|
IS
|
||||||
|
FUNCTION get_dept_name(p_deptno numeric) RETURN character varying;
|
||||||
|
PROCEDURE hire_emp(p_empno numeric, p_ename character varying, p_job character varying, p_sal numeric, p_hiredate timestamp without time zone, p_comm numeric, p_mgr numeric, p_deptno numeric);
|
||||||
|
END pkg_src;
|
||||||
|
|
||||||
|
CREATE OR REPLACE PACKAGE BODY source.pkg_src
|
||||||
|
IS
|
||||||
|
FUNCTION get_dept_name(p_deptno numeric) RETURN character varying IS
|
||||||
|
v_dname VARCHAR2(14);
|
||||||
|
BEGIN
|
||||||
|
SELECT dname INTO v_dname FROM dept WHERE deptno = p_deptno;
|
||||||
|
RETURN v_dname;
|
||||||
|
EXCEPTION
|
||||||
|
WHEN NO_DATA_FOUND THEN
|
||||||
|
DBMS_OUTPUT.PUT_LINE('Invalid department number ' || p_deptno);
|
||||||
|
RETURN '';
|
||||||
|
END;
|
||||||
|
|
||||||
|
PROCEDURE hire_emp(p_empno numeric, p_ename character varying, p_job character varying, p_sal numeric, p_hiredate timestamp without time zone, p_comm numeric, p_mgr numeric, p_deptno numeric) IS
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO emp(empno, ename, job, sal, hiredate, comm, mgr, deptno)
|
||||||
|
VALUES(p_empno, p_ename, p_job, p_sal,
|
||||||
|
p_hiredate, p_comm, p_mgr, p_deptno);
|
||||||
|
END;
|
||||||
|
END pkg_src;
|
||||||
|
|
||||||
|
COMMENT ON PACKAGE source.pkg_src
|
||||||
|
IS 'Target';
|
||||||
|
|
||||||
|
-- Package script difference in header, acl and comment
|
||||||
|
CREATE OR REPLACE PACKAGE source.pkg_header_diff
|
||||||
|
IS
|
||||||
|
FUNCTION get_dept_name(p_deptno numeric) RETURN character varying;
|
||||||
|
PROCEDURE hire_emp(p_empno numeric, p_ename character varying, p_job character varying, p_sal numeric, p_hiredate timestamp without time zone, p_comm numeric, p_mgr numeric, p_deptno numeric);
|
||||||
|
END pkg_header_diff;
|
||||||
|
|
||||||
|
CREATE OR REPLACE PACKAGE BODY source.pkg_header_diff
|
||||||
|
IS
|
||||||
|
FUNCTION get_dept_name(p_deptno numeric) RETURN character varying IS
|
||||||
|
v_dname VARCHAR2(14);
|
||||||
|
BEGIN
|
||||||
|
SELECT dname INTO v_dname FROM dept WHERE deptno = p_deptno;
|
||||||
|
RETURN v_dname;
|
||||||
|
EXCEPTION
|
||||||
|
WHEN NO_DATA_FOUND THEN
|
||||||
|
DBMS_OUTPUT.PUT_LINE('Invalid department number ' || p_deptno);
|
||||||
|
RETURN '';
|
||||||
|
END;
|
||||||
|
|
||||||
|
PROCEDURE hire_emp(p_empno numeric, p_ename character varying, p_job character varying, p_sal numeric, p_hiredate timestamp without time zone, p_comm numeric, p_mgr numeric, p_deptno numeric) IS
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO emp(empno, ename, job, sal, hiredate, comm, mgr, deptno)
|
||||||
|
VALUES(p_empno, p_ename, p_job, p_sal,
|
||||||
|
p_hiredate, p_comm, p_mgr, p_deptno);
|
||||||
|
END;
|
||||||
|
END pkg_header_diff;
|
||||||
|
|
||||||
|
COMMENT ON PACKAGE source.pkg_header_diff
|
||||||
|
IS 'Header Diff';
|
||||||
|
|
||||||
|
GRANT EXECUTE ON PACKAGE source.pkg_header_diff TO PUBLIC;
|
||||||
|
GRANT EXECUTE ON PACKAGE source.pkg_header_diff TO enterprisedb WITH GRANT OPTION;
|
||||||
|
|
||||||
|
-- Package script difference in body, acl and comment
|
||||||
|
CREATE OR REPLACE PACKAGE source.pkg_body_diff
|
||||||
|
IS
|
||||||
|
PROCEDURE hire_emp(p_empno numeric, p_ename character varying, p_job character varying, p_sal numeric, p_hiredate timestamp without time zone, p_comm numeric, p_mgr numeric, p_deptno numeric);
|
||||||
|
END pkg_body_diff;
|
||||||
|
|
||||||
|
CREATE OR REPLACE PACKAGE BODY source.pkg_body_diff
|
||||||
|
IS
|
||||||
|
PROCEDURE hire_emp(p_empno numeric, p_ename character varying, p_job character varying, p_sal numeric, p_hiredate timestamp without time zone, p_comm numeric, p_mgr numeric, p_deptno numeric) IS
|
||||||
|
BEGIN
|
||||||
|
DBMS_OUTPUT.PUT_LINE('Before Insert ');
|
||||||
|
INSERT INTO emp(empno, ename, job, sal, hiredate, comm, mgr, deptno)
|
||||||
|
VALUES(p_empno, p_ename, p_job, p_sal,
|
||||||
|
p_hiredate, p_comm, p_mgr, p_deptno);
|
||||||
|
DBMS_OUTPUT.PUT_LINE('After Insert ');
|
||||||
|
END;
|
||||||
|
END pkg_body_diff;
|
||||||
|
|
||||||
|
-- Synonyms Scripts
|
||||||
|
-- Prerequisite for synonyms
|
||||||
|
CREATE OR REPLACE FUNCTION source.fun_for_syn()
|
||||||
|
RETURNS void
|
||||||
|
LANGUAGE 'plpgsql'
|
||||||
|
VOLATILE
|
||||||
|
COST 100
|
||||||
|
|
||||||
|
AS $BODY$BEGIN
|
||||||
|
SELECT 1;
|
||||||
|
END;$BODY$;
|
||||||
|
ALTER FUNCTION source.fun_for_syn()
|
||||||
|
OWNER TO enterprisedb;
|
||||||
|
|
||||||
|
CREATE OR REPLACE PROCEDURE source.proc_for_syn()
|
||||||
|
AS $BODY$BEGIN
|
||||||
|
SELECT 1;
|
||||||
|
END;$BODY$;
|
||||||
|
|
||||||
|
CREATE OR REPLACE PACKAGE source.pkg_for_syn
|
||||||
|
IS
|
||||||
|
FUNCTION get_dept_name(p_deptno numeric) RETURN character varying;
|
||||||
|
END pkg_for_syn;
|
||||||
|
CREATE OR REPLACE PACKAGE BODY source.pkg_for_syn
|
||||||
|
IS
|
||||||
|
FUNCTION get_dept_name(p_deptno numeric) RETURN character varying IS
|
||||||
|
BEGIN
|
||||||
|
RETURN '';
|
||||||
|
END;
|
||||||
|
END pkg_for_syn;
|
||||||
|
|
||||||
|
CREATE TABLE source.table_for_syn
|
||||||
|
(
|
||||||
|
id bigint,
|
||||||
|
name text COLLATE pg_catalog."default"
|
||||||
|
)
|
||||||
|
TABLESPACE pg_default;
|
||||||
|
ALTER TABLE source.table_for_syn
|
||||||
|
OWNER to enterprisedb;
|
||||||
|
|
||||||
|
CREATE SEQUENCE source.seq_for_syn
|
||||||
|
INCREMENT 5
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 100
|
||||||
|
CACHE 1;
|
||||||
|
ALTER SEQUENCE source.seq_for_syn
|
||||||
|
OWNER TO enterprisedb;
|
||||||
|
|
||||||
|
CREATE OR REPLACE SYNONYM source.syn_fun_src
|
||||||
|
FOR source.fun_for_syn;
|
||||||
|
|
||||||
|
CREATE OR REPLACE SYNONYM source.syn_pkg_src
|
||||||
|
FOR source.pkg_for_syn;
|
||||||
|
|
||||||
|
CREATE OR REPLACE SYNONYM source.syn_proc_src
|
||||||
|
FOR source.proc_for_syn;
|
||||||
|
|
||||||
|
CREATE OR REPLACE SYNONYM source.syn_seq_src
|
||||||
|
FOR source.seq_for_syn;
|
||||||
|
|
||||||
|
CREATE OR REPLACE SYNONYM source.syn_table_src
|
||||||
|
FOR source.table_for_syn;
|
||||||
|
|
||||||
|
CREATE TABLE public.table_for_syn
|
||||||
|
(
|
||||||
|
id bigint,
|
||||||
|
name text COLLATE pg_catalog."default"
|
||||||
|
)
|
||||||
|
TABLESPACE pg_default;
|
||||||
|
ALTER TABLE public.table_for_syn
|
||||||
|
OWNER to enterprisedb;
|
||||||
|
|
||||||
|
CREATE OR REPLACE SYNONYM source.syn_diff
|
||||||
|
FOR public.table_for_syn;
|
||||||
|
|
||||||
|
-- Sequences Script
|
||||||
|
CREATE SEQUENCE source.seq_src
|
||||||
|
CYCLE
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 3
|
||||||
|
CACHE 6;
|
||||||
|
ALTER SEQUENCE source.seq_src
|
||||||
|
OWNER TO enterprisedb;
|
||||||
|
COMMENT ON SEQUENCE source.seq_src
|
||||||
|
IS 'Test Comment';
|
||||||
|
GRANT ALL ON SEQUENCE source.seq_src TO PUBLIC;
|
||||||
|
GRANT ALL ON SEQUENCE source.seq_src TO enterprisedb;
|
||||||
|
|
||||||
|
CREATE SEQUENCE source.seq_diff_comment_acl
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 9223372036854775807
|
||||||
|
CACHE 1;
|
||||||
|
ALTER SEQUENCE source.seq_diff_comment_acl
|
||||||
|
OWNER TO enterprisedb;
|
||||||
|
COMMENT ON SEQUENCE source.seq_diff_comment_acl
|
||||||
|
IS 'Test Comment';
|
||||||
|
GRANT ALL ON SEQUENCE source.seq_diff_comment_acl TO PUBLIC;
|
||||||
|
GRANT ALL ON SEQUENCE source.seq_diff_comment_acl TO enterprisedb;
|
||||||
|
|
||||||
|
CREATE SEQUENCE source.seq_diff_comment_acl_remove
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 9223372036854775807
|
||||||
|
CACHE 1;
|
||||||
|
ALTER SEQUENCE source.seq_diff_comment_acl_remove
|
||||||
|
OWNER TO enterprisedb;
|
||||||
|
|
||||||
|
CREATE SEQUENCE source.seq_diff
|
||||||
|
CYCLE
|
||||||
|
INCREMENT 3
|
||||||
|
START 3
|
||||||
|
MINVALUE 3
|
||||||
|
MAXVALUE 100
|
||||||
|
CACHE 2;
|
||||||
|
ALTER SEQUENCE source.seq_diff
|
||||||
|
OWNER TO enterprisedb;
|
||||||
|
@ -550,3 +550,195 @@ CREATE TYPE target.typ_enum_range_diff AS RANGE
|
|||||||
);
|
);
|
||||||
ALTER TYPE target.typ_enum_range_diff
|
ALTER TYPE target.typ_enum_range_diff
|
||||||
OWNER TO enterprisedb;
|
OWNER TO enterprisedb;
|
||||||
|
|
||||||
|
-- Package script (target only)
|
||||||
|
CREATE OR REPLACE PACKAGE target.pkg_tar
|
||||||
|
IS
|
||||||
|
FUNCTION get_dept_name(p_deptno numeric) RETURN character varying;
|
||||||
|
PROCEDURE hire_emp(p_empno numeric, p_ename character varying, p_job character varying, p_sal numeric, p_hiredate timestamp without time zone, p_comm numeric, p_mgr numeric, p_deptno numeric);
|
||||||
|
END pkg_tar;
|
||||||
|
|
||||||
|
|
||||||
|
CREATE OR REPLACE PACKAGE BODY target.pkg_tar
|
||||||
|
IS
|
||||||
|
FUNCTION get_dept_name(p_deptno numeric) RETURN character varying IS
|
||||||
|
v_dname VARCHAR2(14);
|
||||||
|
BEGIN
|
||||||
|
SELECT dname INTO v_dname FROM dept WHERE deptno = p_deptno;
|
||||||
|
RETURN v_dname;
|
||||||
|
EXCEPTION
|
||||||
|
WHEN NO_DATA_FOUND THEN
|
||||||
|
DBMS_OUTPUT.PUT_LINE('Invalid department number ' || p_deptno);
|
||||||
|
RETURN '';
|
||||||
|
END;
|
||||||
|
|
||||||
|
PROCEDURE hire_emp(p_empno numeric, p_ename character varying, p_job character varying, p_sal numeric, p_hiredate timestamp without time zone, p_comm numeric, p_mgr numeric, p_deptno numeric) IS
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO emp(empno, ename, job, sal, hiredate, comm, mgr, deptno)
|
||||||
|
VALUES(p_empno, p_ename, p_job, p_sal,
|
||||||
|
p_hiredate, p_comm, p_mgr, p_deptno);
|
||||||
|
END;
|
||||||
|
END pkg_tar;
|
||||||
|
|
||||||
|
COMMENT ON PACKAGE target.pkg_tar
|
||||||
|
IS 'Target';
|
||||||
|
|
||||||
|
-- Package script difference in header, acl and comment
|
||||||
|
CREATE OR REPLACE PACKAGE target.pkg_header_diff
|
||||||
|
IS
|
||||||
|
FUNCTION get_dept_name(p_deptno numeric) RETURN character varying;
|
||||||
|
END pkg_header_diff;
|
||||||
|
|
||||||
|
CREATE OR REPLACE PACKAGE BODY target.pkg_header_diff
|
||||||
|
IS
|
||||||
|
FUNCTION get_dept_name(p_deptno numeric) RETURN character varying IS
|
||||||
|
v_dname VARCHAR2(14);
|
||||||
|
BEGIN
|
||||||
|
SELECT dname INTO v_dname FROM dept WHERE deptno = p_deptno;
|
||||||
|
RETURN v_dname;
|
||||||
|
EXCEPTION
|
||||||
|
WHEN NO_DATA_FOUND THEN
|
||||||
|
DBMS_OUTPUT.PUT_LINE('Invalid department number ' || p_deptno);
|
||||||
|
RETURN '';
|
||||||
|
END;
|
||||||
|
END pkg_header_diff;
|
||||||
|
|
||||||
|
-- Package script difference in body, acl and comment
|
||||||
|
CREATE OR REPLACE PACKAGE target.pkg_body_diff
|
||||||
|
IS
|
||||||
|
PROCEDURE hire_emp(p_empno numeric, p_ename character varying, p_job character varying, p_sal numeric, p_hiredate timestamp without time zone, p_comm numeric, p_mgr numeric, p_deptno numeric);
|
||||||
|
END pkg_body_diff;
|
||||||
|
|
||||||
|
CREATE OR REPLACE PACKAGE BODY target.pkg_body_diff
|
||||||
|
IS
|
||||||
|
PROCEDURE hire_emp(p_empno numeric, p_ename character varying, p_job character varying, p_sal numeric, p_hiredate timestamp without time zone, p_comm numeric, p_mgr numeric, p_deptno numeric) IS
|
||||||
|
BEGIN
|
||||||
|
DBMS_OUTPUT.PUT_LINE('Before Insert ');
|
||||||
|
INSERT INTO emp(empno, ename, job, sal, hiredate, comm, mgr, deptno)
|
||||||
|
VALUES(p_empno, p_ename, p_job, p_sal,
|
||||||
|
p_hiredate, p_comm, p_mgr, p_deptno);
|
||||||
|
DBMS_OUTPUT.PUT_LINE('After Insert ');
|
||||||
|
END;
|
||||||
|
END pkg_body_diff;
|
||||||
|
|
||||||
|
COMMENT ON PACKAGE target.pkg_body_diff
|
||||||
|
IS 'Header Diff';
|
||||||
|
|
||||||
|
GRANT EXECUTE ON PACKAGE target.pkg_body_diff TO PUBLIC;
|
||||||
|
GRANT EXECUTE ON PACKAGE target.pkg_body_diff TO enterprisedb WITH GRANT OPTION;
|
||||||
|
|
||||||
|
-- Synonyms Scripts
|
||||||
|
-- Prerequisite for synonyms
|
||||||
|
CREATE OR REPLACE FUNCTION target.fun_for_syn()
|
||||||
|
RETURNS void
|
||||||
|
LANGUAGE 'plpgsql'
|
||||||
|
VOLATILE
|
||||||
|
COST 100
|
||||||
|
|
||||||
|
AS $BODY$BEGIN
|
||||||
|
SELECT 1;
|
||||||
|
END;$BODY$;
|
||||||
|
ALTER FUNCTION target.fun_for_syn()
|
||||||
|
OWNER TO enterprisedb;
|
||||||
|
|
||||||
|
CREATE OR REPLACE PROCEDURE target.proc_for_syn()
|
||||||
|
AS $BODY$BEGIN
|
||||||
|
SELECT 1;
|
||||||
|
END;$BODY$;
|
||||||
|
|
||||||
|
CREATE OR REPLACE PACKAGE target.pkg_for_syn
|
||||||
|
IS
|
||||||
|
FUNCTION get_dept_name(p_deptno numeric) RETURN character varying;
|
||||||
|
END pkg_for_syn;
|
||||||
|
CREATE OR REPLACE PACKAGE BODY target.pkg_for_syn
|
||||||
|
IS
|
||||||
|
FUNCTION get_dept_name(p_deptno numeric) RETURN character varying IS
|
||||||
|
BEGIN
|
||||||
|
RETURN '';
|
||||||
|
END;
|
||||||
|
END pkg_for_syn;
|
||||||
|
|
||||||
|
CREATE TABLE target.table_for_syn
|
||||||
|
(
|
||||||
|
id bigint,
|
||||||
|
name text COLLATE pg_catalog."default"
|
||||||
|
)
|
||||||
|
TABLESPACE pg_default;
|
||||||
|
ALTER TABLE target.table_for_syn
|
||||||
|
OWNER to enterprisedb;
|
||||||
|
|
||||||
|
CREATE SEQUENCE target.seq_for_syn
|
||||||
|
INCREMENT 5
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 100
|
||||||
|
CACHE 1;
|
||||||
|
ALTER SEQUENCE target.seq_for_syn
|
||||||
|
OWNER TO enterprisedb;
|
||||||
|
|
||||||
|
CREATE OR REPLACE SYNONYM target.syn_fun_src
|
||||||
|
FOR target.fun_for_syn;
|
||||||
|
|
||||||
|
CREATE OR REPLACE SYNONYM target.syn_pkg_src
|
||||||
|
FOR target.pkg_for_syn;
|
||||||
|
|
||||||
|
CREATE OR REPLACE SYNONYM target.syn_proc_src
|
||||||
|
FOR target.proc_for_syn;
|
||||||
|
|
||||||
|
CREATE OR REPLACE SYNONYM target.syn_seq_src
|
||||||
|
FOR target.seq_for_syn;
|
||||||
|
|
||||||
|
CREATE OR REPLACE SYNONYM target.syn_table_src
|
||||||
|
FOR target.table_for_syn;
|
||||||
|
|
||||||
|
CREATE OR REPLACE PROCEDURE public.proc_for_syn()
|
||||||
|
AS $BODY$BEGIN
|
||||||
|
SELECT 1;
|
||||||
|
END;$BODY$;
|
||||||
|
|
||||||
|
CREATE OR REPLACE SYNONYM target.syn_diff
|
||||||
|
FOR public.proc_for_syn;
|
||||||
|
|
||||||
|
-- Sequences Script
|
||||||
|
CREATE SEQUENCE target.seq_tar
|
||||||
|
CYCLE
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 3
|
||||||
|
CACHE 6;
|
||||||
|
ALTER SEQUENCE target.seq_tar
|
||||||
|
OWNER TO enterprisedb;
|
||||||
|
|
||||||
|
CREATE SEQUENCE target.seq_diff_comment_acl
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 9223372036854775807
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
ALTER SEQUENCE target.seq_diff_comment_acl
|
||||||
|
OWNER TO enterprisedb;
|
||||||
|
|
||||||
|
CREATE SEQUENCE target.seq_diff_comment_acl_remove
|
||||||
|
INCREMENT 1
|
||||||
|
START 1
|
||||||
|
MINVALUE 1
|
||||||
|
MAXVALUE 9223372036854775807
|
||||||
|
CACHE 1;
|
||||||
|
ALTER SEQUENCE target.seq_diff_comment_acl_remove
|
||||||
|
OWNER TO enterprisedb;
|
||||||
|
COMMENT ON SEQUENCE target.seq_diff_comment_acl_remove
|
||||||
|
IS 'Test Comment';
|
||||||
|
GRANT ALL ON SEQUENCE target.seq_diff_comment_acl_remove TO PUBLIC;
|
||||||
|
GRANT ALL ON SEQUENCE target.seq_diff_comment_acl_remove TO enterprisedb;
|
||||||
|
|
||||||
|
CREATE SEQUENCE target.seq_diff
|
||||||
|
INCREMENT 5
|
||||||
|
START 3
|
||||||
|
MINVALUE 3
|
||||||
|
MAXVALUE 80
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
ALTER SEQUENCE target.seq_diff
|
||||||
|
OWNER TO enterprisedb;
|
||||||
|
Loading…
Reference in New Issue
Block a user