diff --git a/docs/en_US/release_notes_4_16.rst b/docs/en_US/release_notes_4_16.rst index ce274ea6d..853704160 100644 --- a/docs/en_US/release_notes_4_16.rst +++ b/docs/en_US/release_notes_4_16.rst @@ -30,6 +30,7 @@ Bug fixes | `Issue #3538 `_ - Fix issue where the Reset button does not get enabled till all the mandatory fields are provided in the dialog. | `Issue #4220 `_ - Fix scrolling issue in 'Users' dialog. +| `Issue #4516 `_ - Remove the sorting of table headers with no labels. | `Issue #4659 `_ - Updated documentation for default privileges to clarify more on the grantor. | `Issue #4674 `_ - Fix query tool launch error if user name contains HTML characters. It's a regression. | `Issue #4724 `_ - Fix network disconnect issue while establishing the connection via SSH Tunnel and it impossible to expand the Servers node. @@ -55,5 +56,6 @@ Bug fixes | `Issue #4975 `_ - Fix issue where the user can not switch the UI language. It's a regression of #4348. | `Issue #4976 `_ - Fix reverse engineering SQL issue where when clause is not visible for PG/EPAS 12. | `Issue #4978 `_ - Fix pgAdmin4 failed to start issue after upgrading to version 4.15. +| `Issue #4982 `_ - Added statistics and storage information in reverse engineering SQL of table/column. | `Issue #4985 `_ - Fix an issue where the inherited table name with quotes did not escape correctly. | `Issue #4991 `_ - Fix an issue where context menu is open along with submenu and the focus is not on context menu or submenu. diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/10_plus/alter_column_char.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/10_plus/alter_column_char.sql index d5cb65e8f..335d4b88e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/10_plus/alter_column_char.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/10_plus/alter_column_char.sql @@ -8,4 +8,10 @@ ALTER TABLE testschema."table_2_$%{}[]()&*^!@""'`\/#" COMMENT ON COLUMN testschema."table_2_$%{}[]()&*^!@""'`\/#"."new_col_2_$%{}[]()&*^!@""'`\/#" IS 'Comment for alter'; +ALTER TABLE testschema."table_2_$%{}[]()&*^!@""'`\/#" + ALTER COLUMN "new_col_2_$%{}[]()&*^!@""'`\/#" SET STATISTICS 5; + +ALTER TABLE testschema."table_2_$%{}[]()&*^!@""'`\/#" + ALTER COLUMN "new_col_2_$%{}[]()&*^!@""'`\/#" SET STORAGE PLAIN; + GRANT INSERT("new_col_2_$%{}[]()&*^!@""'`\/#"), SELECT("new_col_2_$%{}[]()&*^!@""'`\/#"), REFERENCES("new_col_2_$%{}[]()&*^!@""'`\/#") ON testschema."table_2_$%{}[]()&*^!@""'`\/#" TO PUBLIC; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/10_plus/test.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/10_plus/test.json index cfeddca04..287d91e72 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/10_plus/test.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/10_plus/test.json @@ -86,7 +86,7 @@ "attnum": 2, "name": "new_col_2_$%{}[]()&*^!@\"'`\\/#", "attlen": null, - "attstattarget": "0", + "attstattarget": "5", "attstorage": "p", "description": "Comment for alter", "cltype":"character", diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/12_plus/alter_column_char.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/12_plus/alter_column_char.sql index b4274272c..e55b117dc 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/12_plus/alter_column_char.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/12_plus/alter_column_char.sql @@ -8,4 +8,10 @@ ALTER TABLE testschema."table_3_$%{}[]()&*^!@""'`\/#" COMMENT ON COLUMN testschema."table_3_$%{}[]()&*^!@""'`\/#"."new_col_2_$%{}[]()&*^!@""'`\/#" IS 'Comment for alter'; +ALTER TABLE testschema."table_3_$%{}[]()&*^!@""'`\/#" + ALTER COLUMN "new_col_2_$%{}[]()&*^!@""'`\/#" SET STATISTICS 5; + +ALTER TABLE testschema."table_3_$%{}[]()&*^!@""'`\/#" + ALTER COLUMN "new_col_2_$%{}[]()&*^!@""'`\/#" SET STORAGE PLAIN; + GRANT INSERT("new_col_2_$%{}[]()&*^!@""'`\/#"), SELECT("new_col_2_$%{}[]()&*^!@""'`\/#"), REFERENCES("new_col_2_$%{}[]()&*^!@""'`\/#") ON testschema."table_3_$%{}[]()&*^!@""'`\/#" TO PUBLIC; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/12_plus/test.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/12_plus/test.json index bd0f217ec..a75a22fb4 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/12_plus/test.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/12_plus/test.json @@ -86,7 +86,7 @@ "attnum": 2, "name": "new_col_2_$%{}[]()&*^!@\"'`\\/#", "attlen": null, - "attstattarget": "0", + "attstattarget": "5", "attstorage": "p", "description": "Comment for alter", "cltype":"character", diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/default/alter_column_char.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/default/alter_column_char.sql index 962634cdc..30a97ca40 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/default/alter_column_char.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/default/alter_column_char.sql @@ -8,4 +8,10 @@ ALTER TABLE testschema."table_1_$%{}[]()&*^!@""'`\/#" COMMENT ON COLUMN testschema."table_1_$%{}[]()&*^!@""'`\/#"."new_col_2_$%{}[]()&*^!@""'`\/#" IS 'Comment for alter'; +ALTER TABLE testschema."table_1_$%{}[]()&*^!@""'`\/#" + ALTER COLUMN "new_col_2_$%{}[]()&*^!@""'`\/#" SET STATISTICS 5; + +ALTER TABLE testschema."table_1_$%{}[]()&*^!@""'`\/#" + ALTER COLUMN "new_col_2_$%{}[]()&*^!@""'`\/#" SET STORAGE PLAIN; + GRANT INSERT("new_col_2_$%{}[]()&*^!@""'`\/#"), SELECT("new_col_2_$%{}[]()&*^!@""'`\/#"), REFERENCES("new_col_2_$%{}[]()&*^!@""'`\/#") ON testschema."table_1_$%{}[]()&*^!@""'`\/#" TO PUBLIC; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/default/test.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/default/test.json index 8cc45c9fa..264269b76 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/default/test.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/columns/tests/default/test.json @@ -86,7 +86,7 @@ "attnum": 2, "name": "new_col_2_$%{}[]()&*^!@\"'`\\/#", "attlen": null, - "attstattarget": "0", + "attstattarget": "5", "attstorage": "p", "description": "Comment for alter", "cltype":"character", diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/10_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/10_plus/create.sql index 0fba3369f..36eb7ff8e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/10_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/10_plus/create.sql @@ -31,6 +31,20 @@ COMMENT ON COLUMN {{conn|qtIdent(data.schema, data.table, data.name)}} ALTER TABLE {{conn|qtIdent(data.schema, data.table)}} {{ VARIABLE.SET(conn, 'COLUMN', data.name, data.attoptions) }} +{% endif %} +{### Alter column statistics value ###} +{% if data.attstattarget is defined and data.attstattarget > -1 %} +ALTER TABLE {{conn|qtIdent(data.schema, data.table)}} + ALTER COLUMN {{conn|qtTypeIdent(data.name)}} SET STATISTICS {{data.attstattarget}}; + +{% endif %} +{### Alter column storage value ###} +{% if data.attstorage is defined and data.attstorage != data.defaultstorage %} +ALTER TABLE {{conn|qtIdent(data.schema, data.table)}} + ALTER COLUMN {{conn|qtTypeIdent(data.name)}} SET STORAGE {%if data.attstorage == 'p' %} +PLAIN{% elif data.attstorage == 'm'%}MAIN{% elif data.attstorage == 'e'%} +EXTERNAL{% elif data.attstorage == 'x'%}EXTENDED{% endif %}; + {% endif %} {### ACL ###} {% if data.attacl %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/10_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/10_plus/update.sql index 61c78e1a0..4b943defb 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/10_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/10_plus/update.sql @@ -72,13 +72,13 @@ ALTER TABLE {{conn|qtIdent(data.schema, data.table)}} {% endif %} {### Alter column statistics value ###} -{% if data.attstattarget and data.attstattarget != o_data.attstattarget %} +{% if data.attstattarget is defined and data.attstattarget != o_data.attstattarget %} ALTER TABLE {{conn|qtIdent(data.schema, data.table)}} ALTER COLUMN {% if data.name %}{{conn|qtTypeIdent(data.name)}}{% else %}{{conn|qtTypeIdent(o_data.name)}}{% endif %} SET STATISTICS {{data.attstattarget}}; {% endif %} {### Alter column storage value ###} -{% if data.attstorage and data.attstorage != o_data.attstorage %} +{% if data.attstorage is defined and data.attstorage != o_data.attstorage %} ALTER TABLE {{conn|qtIdent(data.schema, data.table)}} ALTER COLUMN {% if data.name %}{{conn|qtTypeIdent(data.name)}}{% else %}{{conn|qtTypeIdent(o_data.name)}}{% endif %} SET STORAGE {%if data.attstorage == 'p' %} PLAIN{% elif data.attstorage == 'm'%}MAIN{% elif data.attstorage == 'e'%} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/12_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/12_plus/create.sql index 108d3b5e4..71de43658 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/12_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/12_plus/create.sql @@ -31,6 +31,20 @@ COMMENT ON COLUMN {{conn|qtIdent(data.schema, data.table, data.name)}} ALTER TABLE {{conn|qtIdent(data.schema, data.table)}} {{ VARIABLE.SET(conn, 'COLUMN', data.name, data.attoptions) }} +{% endif %} +{### Alter column statistics value ###} +{% if data.attstattarget is defined and data.attstattarget > -1 %} +ALTER TABLE {{conn|qtIdent(data.schema, data.table)}} + ALTER COLUMN {{conn|qtTypeIdent(data.name)}} SET STATISTICS {{data.attstattarget}}; + +{% endif %} +{### Alter column storage value ###} +{% if data.attstorage is defined and data.attstorage != data.defaultstorage %} +ALTER TABLE {{conn|qtIdent(data.schema, data.table)}} + ALTER COLUMN {{conn|qtTypeIdent(data.name)}} SET STORAGE {%if data.attstorage == 'p' %} +PLAIN{% elif data.attstorage == 'm'%}MAIN{% elif data.attstorage == 'e'%} +EXTERNAL{% elif data.attstorage == 'x'%}EXTENDED{% endif %}; + {% endif %} {### ACL ###} {% if data.attacl %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/9.2_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/9.2_plus/update.sql index 5bf5efd42..d27734401 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/9.2_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/9.2_plus/update.sql @@ -32,13 +32,13 @@ ALTER TABLE {{conn|qtIdent(data.schema, data.table)}} {% endif %} {### Alter column statistics value ###} -{% if data.attstattarget and data.attstattarget != o_data.attstattarget %} +{% if data.attstattarget is defined and data.attstattarget != o_data.attstattarget %} ALTER TABLE {{conn|qtIdent(data.schema, data.table)}} ALTER COLUMN {% if data.name %}{{conn|qtTypeIdent(data.name)}}{% else %}{{conn|qtTypeIdent(o_data.name)}}{% endif %} SET STATISTICS {{data.attstattarget}}; {% endif %} {### Alter column storage value ###} -{% if data.attstorage and data.attstorage != o_data.attstorage %} +{% if data.attstorage is defined and data.attstorage != o_data.attstorage %} ALTER TABLE {{conn|qtIdent(data.schema, data.table)}} ALTER COLUMN {% if data.name %}{{conn|qtTypeIdent(data.name)}}{% else %}{{conn|qtTypeIdent(o_data.name)}}{% endif %} SET STORAGE {%if data.attstorage == 'p' %} PLAIN{% elif data.attstorage == 'm'%}MAIN{% elif data.attstorage == 'e'%} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/create.sql index 1e2f5cfa9..affd88906 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/create.sql @@ -22,6 +22,20 @@ COMMENT ON COLUMN {{conn|qtIdent(data.schema, data.table, data.name)}} ALTER TABLE {{conn|qtIdent(data.schema, data.table)}} {{ VARIABLE.SET(conn, 'COLUMN', data.name, data.attoptions) }} +{% endif %} +{### Alter column statistics value ###} +{% if data.attstattarget is defined and data.attstattarget > -1 %} +ALTER TABLE {{conn|qtIdent(data.schema, data.table)}} + ALTER COLUMN {{conn|qtTypeIdent(data.name)}} SET STATISTICS {{data.attstattarget}}; + +{% endif %} +{### Alter column storage value ###} +{% if data.attstorage is defined and data.attstorage != data.defaultstorage %} +ALTER TABLE {{conn|qtIdent(data.schema, data.table)}} + ALTER COLUMN {{conn|qtTypeIdent(data.name)}} SET STORAGE {%if data.attstorage == 'p' %} +PLAIN{% elif data.attstorage == 'm'%}MAIN{% elif data.attstorage == 'e'%} +EXTERNAL{% elif data.attstorage == 'x'%}EXTENDED{% endif %}; + {% endif %} {### ACL ###} {% if data.attacl %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/update.sql index baabdaa6c..ac0afe8d1 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/columns/sql/default/update.sql @@ -33,13 +33,13 @@ ALTER TABLE {{conn|qtIdent(data.schema, data.table)}} {% endif %} {### Alter column statistics value ###} -{% if data.attstattarget and data.attstattarget != o_data.attstattarget %} +{% if data.attstattarget is defined and data.attstattarget != o_data.attstattarget %} ALTER TABLE {{conn|qtIdent(data.schema, data.table)}} ALTER COLUMN {% if data.name %}{{conn|qtTypeIdent(data.name)}}{% else %}{{conn|qtTypeIdent(o_data.name)}}{% endif %} SET STATISTICS {{data.attstattarget}}; {% endif %} {### Alter column storage value ###} -{% if data.attstorage and data.attstorage != o_data.attstorage %} +{% if data.attstorage is defined and data.attstorage != o_data.attstorage %} ALTER TABLE {{conn|qtIdent(data.schema, data.table)}} ALTER COLUMN {% if data.name %}{{conn|qtTypeIdent(data.name)}}{% else %}{{conn|qtTypeIdent(o_data.name)}}{% endif %} SET STORAGE {%if data.attstorage == 'p' %} PLAIN{% elif data.attstorage == 'm'%}MAIN{% elif data.attstorage == 'e'%} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/10_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/10_plus/create.sql index 8ba1d882b..478e6d752 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/10_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/10_plus/create.sql @@ -140,6 +140,21 @@ COMMENT ON COLUMN {{conn|qtIdent(data.schema, data.name, c.name)}} ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} {{ VARIABLE.SET(conn, 'COLUMN', c.name, c.attoptions) }} + +{% endif %} +{### Alter column statistics value ###} +{% if c.attstattarget is defined and c.attstattarget > -1 %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + ALTER COLUMN {{conn|qtTypeIdent(c.name)}} SET STATISTICS {{c.attstattarget}}; + +{% endif %} +{### Alter column storage value ###} +{% if c.attstorage is defined and c.attstorage != c.defaultstorage %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + ALTER COLUMN {{conn|qtTypeIdent(c.name)}} SET STORAGE {%if c.attstorage == 'p' %} +PLAIN{% elif c.attstorage == 'm'%}MAIN{% elif c.attstorage == 'e'%} +EXTERNAL{% elif c.attstorage == 'x'%}EXTENDED{% endif %}; + {% endif %} {### ACL ###} {% if c.attacl and c.attacl|length > 0 %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/create.sql index c4ba99216..7abe52ab6 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/12_plus/create.sql @@ -153,6 +153,21 @@ COMMENT ON COLUMN {{conn|qtIdent(data.schema, data.name, c.name)}} ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} {{ VARIABLE.SET(conn, 'COLUMN', c.name, c.attoptions) }} + +{% endif %} +{### Alter column statistics value ###} +{% if c.attstattarget is defined and c.attstattarget > -1 %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + ALTER COLUMN {{conn|qtTypeIdent(c.name)}} SET STATISTICS {{c.attstattarget}}; + +{% endif %} +{### Alter column storage value ###} +{% if c.attstorage is defined and c.attstorage != c.defaultstorage %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + ALTER COLUMN {{conn|qtTypeIdent(c.name)}} SET STORAGE {%if c.attstorage == 'p' %} +PLAIN{% elif c.attstorage == 'm'%}MAIN{% elif c.attstorage == 'e'%} +EXTERNAL{% elif c.attstorage == 'x'%}EXTENDED{% endif %}; + {% endif %} {### ACL ###} {% if c.attacl and c.attacl|length > 0 %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/create.sql index 5a5519714..25b243041 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/create.sql @@ -128,6 +128,21 @@ COMMENT ON COLUMN {{conn|qtIdent(data.schema, data.name, c.name)}} ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} {{ VARIABLE.SET(conn, 'COLUMN', c.name, c.attoptions) }} + +{% endif %} +{### Alter column statistics value ###} +{% if c.attstattarget is defined and c.attstattarget > -1 %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + ALTER COLUMN {{conn|qtTypeIdent(c.name)}} SET STATISTICS {{c.attstattarget}}; + +{% endif %} +{### Alter column storage value ###} +{% if c.attstorage is defined and c.attstorage != c.defaultstorage %} +ALTER TABLE {{conn|qtIdent(data.schema, data.name)}} + ALTER COLUMN {{conn|qtTypeIdent(c.name)}} SET STORAGE {%if c.attstorage == 'p' %} +PLAIN{% elif c.attstorage == 'm'%}MAIN{% elif c.attstorage == 'e'%} +EXTERNAL{% elif c.attstorage == 'x'%}EXTENDED{% endif %}; + {% endif %} {### ACL ###} {% if c.attacl and c.attacl|length > 0 %}