public inbox for [email protected]  
help / color / mirror / Atom feed
[RM4396] Definition update of MATERIALIZED VIEW loses indexes
2+ messages / 2 participants
[nested] [flat]

* [RM4396] Definition update of MATERIALIZED VIEW loses indexes
@ 2019-11-27 10:14 Rahul Shirsat <[email protected]>
  2019-12-02 07:02 ` Re: [RM4396] Definition update of MATERIALIZED VIEW loses indexes Akshay Joshi <[email protected]>
  0 siblings, 1 reply; 2+ messages in thread

From: Rahul Shirsat @ 2019-11-27 10:14 UTC (permalink / raw)
  To: pgadmin-hackers

Hi Hackers,

Please find the patch for the materialized view as per defined in the bug.

-- 
*Rahul Shirsat*
Software Engineer | EnterpriseDB Corporation.


Attachments:

  [application/octet-stream] RM4396.patch (25.5K, 3-RM4396.patch)
  download | inline diff:
diff --git a/docs/en_US/materialized_view_dialog.rst b/docs/en_US/materialized_view_dialog.rst
index d7494d946..534e86b73 100644
--- a/docs/en_US/materialized_view_dialog.rst
+++ b/docs/en_US/materialized_view_dialog.rst
@@ -35,7 +35,9 @@ Click the *Definition* tab to continue.
     :align: center
 
 Use the text editor field in the *Definition* tab to provide the query that will
-populate the materialized view.
+populate the materialized view. Please note that updating the definition of existing
+materialized view would result in loss of Parameter(Table, Toast), Security(Privileges & Security labels),
+Indexes and other dependent objects.
 
 Click the *Storage* tab to continue.
 
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/static/js/mview.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/static/js/mview.js
index e50f61a1f..3951e619c 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/static/js/mview.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/static/js/mview.js
@@ -142,6 +142,7 @@ define('pgadmin.node.mview', [
           spcname: undefined,
           toast_autovacuum_enabled: false,
           autovacuum_enabled: false,
+          warn_before_save: undefined,
         },
         schema: [{
           id: 'name', label: gettext('Name'), cell: 'string',
@@ -171,7 +172,22 @@ define('pgadmin.node.mview', [
           id: 'definition', label: gettext('Definition'), cell: 'string',
           type: 'text', mode: ['create', 'edit'], group: gettext('Definition'),
           tabPanelCodeClass: 'sql-code-control',
-          control: Backform.SqlCodeControl,
+          control: Backform.SqlCodeControl.extend({
+            onChange: function() {
+              Backform.SqlCodeControl.prototype.onChange.apply(this, arguments);
+              if(this.model && this.model.changed) {
+                if(this.model.origSessAttrs && (this.model.changed.definition != this.model.origSessAttrs.definition)) {
+                  this.model.warn_before_save = 'Updating the definition will drop and re-create the materialized view. It may result in loss of information about its dependent objects. Do you want to continue?';
+                }
+                else {
+                  this.model.warn_before_save = undefined;
+                }
+              }
+              else {
+                this.model.warn_before_save = undefined;
+              }
+            },
+          }),
         },{
           id: 'with_data', label: gettext('With data?'),
           group: gettext('Storage'), mode: ['edit', 'create'],
@@ -238,6 +254,7 @@ define('pgadmin.node.mview', [
           }else{
             this.errorModel.unset('definition');
           }
+
           return null;
         },
         // We will disable everything if we are under catalog node
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/9.4_plus/sql/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/9.4_plus/sql/update.sql
index f243c4ab8..a728b18c9 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/9.4_plus/sql/update.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/9.4_plus/sql/update.sql
@@ -27,9 +27,14 @@ ALTER TABLE {{ conn|qtIdent(view_schema, view_name) }}
 {% if def and def != o_data.definition.rstrip(';') %}
 DROP MATERIALIZED VIEW {{ conn|qtIdent(view_schema, view_name) }};
 CREATE MATERIALIZED VIEW {{ conn|qtIdent(view_schema, view_name) }}
-{% if data.fillfactor or (data['vacuum_data']['changed']|length > 0 ) %}
+{% if data.fillfactor or o_data.fillfactor %}
 WITH(
-{% if data.fillfactor %} FILLFACTOR = {{ data.fillfactor }}{% if data['vacuum_data']['changed']|length > 0 %},{% endif %}{{ '\n' }} {% endif %}
+{% if data.fillfactor %}
+FILLFACTOR = {{ data.fillfactor }}{% if (data['vacuum_data'] is defined and data['vacuum_data']['changed']|length > 0) or (o_data['vacuum_data'] is defined and o_data['vacuum_data']['changed']|length > 0)  %},{% endif %}
+{% elif o_data.fillfactor %}
+FILLFACTOR = {{ o_data.fillfactor }}{% if (data['vacuum_data'] is defined and data['vacuum_data']['changed']|length > 0) or (o_data['vacuum_data'] is defined and o_data['vacuum_data']['changed']|length > 0)  %},{% endif %}
+{% endif %}
+
 {% if data['vacuum_data']['changed']|length > 0 %}
 {% for field in data['vacuum_data']['changed'] %} {{ field.name }} = {{ field.value|lower }}{% if not loop.last  %},{{ '\n' }}{% endif %}
 {% endfor %}
@@ -40,11 +45,14 @@ WITH(
 {{ def }}
 {% if data.with_data is defined %}
  WITH {{ 'DATA' if data.with_data else 'NO DATA' }};
-
-{% elif o_data.with_data %}
+{% elif o_data.with_data is defined %}
  WITH {{ 'DATA' if o_data.with_data else 'NO DATA' }};
 
 {% endif %}
+{% if o_data.comment and not data.comment  %}
+COMMENT ON MATERIALIZED VIEW {{ conn|qtIdent(view_schema, view_name) }}
+    IS {{ o_data.comment|qtLiteral }};
+{% endif %}
 {% else %}
 {# ======= Alter Tablespace ========= #}
 {%- if data.spcoid and o_data.spcoid != data.spcoid  -%}
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/ppas/9.3_plus/sql/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/ppas/9.3_plus/sql/update.sql
index 2b4cc9327..55cdfb03e 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/ppas/9.3_plus/sql/update.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/ppas/9.3_plus/sql/update.sql
@@ -27,10 +27,12 @@ ALTER TABLE {{ conn|qtIdent(view_schema, view_name) }}
 {% if def and def != o_data.definition.rstrip(';') %}
 DROP MATERIALIZED VIEW {{ conn|qtIdent(view_schema, view_name) }};
 CREATE MATERIALIZED VIEW {{ conn|qtIdent(view_schema, view_name) }}
-{% if data.fillfactor or (data['vacuum_data']['changed']|length > 0 ) %}
+{% if data.fillfactor or o_data.fillfactor %}
 WITH(
 {% if data.fillfactor %}
-  FILLFACTOR = {{ data.fillfactor }}{% if data['vacuum_data']['changed']|length > 0 %},{% endif %}{{ '\n' }}
+FILLFACTOR = {{ data.fillfactor }}{% if (data['vacuum_data'] is defined and data['vacuum_data']['changed']|length > 0) or (o_data['vacuum_data'] is defined and o_data['vacuum_data']['changed']|length > 0)  %},{% endif %}
+{% elif o_data.fillfactor %}
+FILLFACTOR = {{ o_data.fillfactor }}{% if (data['vacuum_data'] is defined and data['vacuum_data']['changed']|length > 0) or (o_data['vacuum_data'] is defined and o_data['vacuum_data']['changed']|length > 0)  %},{% endif %}
 {% endif %}
 {% if data['vacuum_data']['changed']|length > 0 %}
 {% for field in data['vacuum_data']['changed'] %} {{ field.name }} = {{ field.value|lower }}{% if not loop.last  %},{% endif %}{{ '\n' }}
@@ -43,10 +45,14 @@ WITH(
 {% if data.with_data is defined %}
  WITH {{ 'DATA' if data.with_data else 'NO DATA' }};
 
-{% elif o_data.with_data %}
+{% elif o_data.with_data is defined %}
  WITH {{ 'DATA' if o_data.with_data else 'NO DATA' }};
 
 {% endif %}
+{% if o_data.comment and not data.comment  %}
+COMMENT ON MATERIALIZED VIEW {{ conn|qtIdent(view_schema, view_name) }}
+    IS {{ o_data.comment|qtLiteral }};
+{% endif %}
 {% else %}
 {# ======= Alter Tablespace ========= #}
 {%- if data.spcoid and o_data.spcoid != data.spcoid  -%}
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_mview_add_fillfactor.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_mview_add_fillfactor.sql
index 03197d009..5b55f1d4d 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_mview_add_fillfactor.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_mview_add_fillfactor.sql
@@ -10,7 +10,10 @@ WITH (
 TABLESPACE pg_default
 AS
  SELECT 12
-WITH NO DATA;
+WITH DATA;
 
 ALTER TABLE public."testmview_$%{}[]()&*^!/@`#"
     OWNER TO postgres;
+
+COMMENT ON MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#"
+    IS 'comment1';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_mview_add_fillfactor_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_mview_add_fillfactor_msql.sql
index 0c51d157a..2ef36421f 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_mview_add_fillfactor_msql.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_mview_add_fillfactor_msql.sql
@@ -3,4 +3,4 @@ SET(
   FILLFACTOR = 18
 );
 
-REFRESH MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#" WITH NO DATA;
+REFRESH MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#" WITH DATA;
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_mview_add_table_parameter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_mview_add_table_parameter.sql
index 9a60bd524..ff76b997e 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_mview_add_table_parameter.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_mview_add_table_parameter.sql
@@ -11,7 +11,10 @@ WITH (
 TABLESPACE pg_default
 AS
  SELECT 12
-WITH NO DATA;
+WITH DATA;
 
 ALTER TABLE public."testmview_$%{}[]()&*^!/@`#"
     OWNER TO postgres;
+
+COMMENT ON MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#"
+    IS 'comment1';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_mview_definition.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_mview_definition.sql
index 481879f70..7f9fe95c6 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_mview_definition.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_mview_definition.sql
@@ -6,7 +6,10 @@ CREATE MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#"
 TABLESPACE pg_default
 AS
  SELECT 12
-WITH DATA;
+WITH NO DATA;
 
 ALTER TABLE public."testmview_$%{}[]()&*^!/@`#"
     OWNER TO postgres;
+
+COMMENT ON MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#"
+    IS 'comment1';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_mview_definition_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_mview_definition_msql.sql
index 2c1b637f4..16b772233 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_mview_definition_msql.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_mview_definition_msql.sql
@@ -2,3 +2,7 @@ DROP MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#";
 CREATE MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#"
  AS
 SELECT 12
+ WITH NO DATA;
+
+COMMENT ON MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#"
+    IS 'comment1';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_mview_remove_table_parameter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_mview_remove_table_parameter.sql
index 03197d009..5b55f1d4d 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_mview_remove_table_parameter.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/alter_mview_remove_table_parameter.sql
@@ -10,7 +10,10 @@ WITH (
 TABLESPACE pg_default
 AS
  SELECT 12
-WITH NO DATA;
+WITH DATA;
 
 ALTER TABLE public."testmview_$%{}[]()&*^!/@`#"
     OWNER TO postgres;
+
+COMMENT ON MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#"
+    IS 'comment1';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/test_mview.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/test_mview.json
index 335b1fed9..7f0bd477d 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/test_mview.json
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/pg/9.4_plus/test_mview.json
@@ -205,7 +205,7 @@
       "msql_endpoint": "NODE-mview.msql_id",
       "data": {
         "fillfactor": "18",
-        "with_data": false
+        "with_data": true
       },
       "expected_sql_file": "alter_mview_add_fillfactor.sql",
       "expected_msql_file": "alter_mview_add_fillfactor_msql.sql"
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/alter_mview_add_fillfactor.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/alter_mview_add_fillfactor.sql
index be0d59bea..da3c3849f 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/alter_mview_add_fillfactor.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/alter_mview_add_fillfactor.sql
@@ -10,7 +10,10 @@ WITH (
 TABLESPACE pg_default
 AS
  SELECT 12
-WITH NO DATA;
+WITH DATA;
 
 ALTER TABLE public."testmview_$%{}[]()&*^!/@`#"
     OWNER TO enterprisedb;
+
+COMMENT ON MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#"
+    IS 'comment1';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/alter_mview_add_fillfactor_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/alter_mview_add_fillfactor_msql.sql
index 0c51d157a..2ef36421f 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/alter_mview_add_fillfactor_msql.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/alter_mview_add_fillfactor_msql.sql
@@ -3,4 +3,4 @@ SET(
   FILLFACTOR = 18
 );
 
-REFRESH MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#" WITH NO DATA;
+REFRESH MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#" WITH DATA;
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/alter_mview_add_table_parameter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/alter_mview_add_table_parameter.sql
index ee5956d1a..874d20d5a 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/alter_mview_add_table_parameter.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/alter_mview_add_table_parameter.sql
@@ -11,7 +11,10 @@ WITH (
 TABLESPACE pg_default
 AS
  SELECT 12
-WITH NO DATA;
+WITH DATA;
 
 ALTER TABLE public."testmview_$%{}[]()&*^!/@`#"
     OWNER TO enterprisedb;
+
+COMMENT ON MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#"
+    IS 'comment1';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/alter_mview_definition.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/alter_mview_definition.sql
index 41f75fbe5..3d31af0d2 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/alter_mview_definition.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/alter_mview_definition.sql
@@ -6,7 +6,10 @@ CREATE MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#"
 TABLESPACE pg_default
 AS
  SELECT 12
-WITH DATA;
+WITH NO DATA;
 
 ALTER TABLE public."testmview_$%{}[]()&*^!/@`#"
     OWNER TO enterprisedb;
+
+COMMENT ON MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#"
+    IS 'comment1';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/alter_mview_definition_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/alter_mview_definition_msql.sql
index 2c1b637f4..16b772233 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/alter_mview_definition_msql.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/alter_mview_definition_msql.sql
@@ -2,3 +2,7 @@ DROP MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#";
 CREATE MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#"
  AS
 SELECT 12
+ WITH NO DATA;
+
+COMMENT ON MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#"
+    IS 'comment1';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/alter_mview_remove_table_parameter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/alter_mview_remove_table_parameter.sql
index be0d59bea..da3c3849f 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/alter_mview_remove_table_parameter.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/alter_mview_remove_table_parameter.sql
@@ -10,7 +10,10 @@ WITH (
 TABLESPACE pg_default
 AS
  SELECT 12
-WITH NO DATA;
+WITH DATA;
 
 ALTER TABLE public."testmview_$%{}[]()&*^!/@`#"
     OWNER TO enterprisedb;
+
+COMMENT ON MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#"
+    IS 'comment1';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/test_mview.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/test_mview.json
index b945afacb..4ea610331 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/test_mview.json
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/11_plus/test_mview.json
@@ -205,7 +205,7 @@
       "msql_endpoint": "NODE-mview.msql_id",
       "data": {
         "fillfactor": "18",
-        "with_data": false
+        "with_data": true
       },
       "expected_sql_file": "alter_mview_add_fillfactor.sql",
       "expected_msql_file": "alter_mview_add_fillfactor_msql.sql"
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_mview_add_fillfactor.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_mview_add_fillfactor.sql
index be0d59bea..da3c3849f 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_mview_add_fillfactor.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_mview_add_fillfactor.sql
@@ -10,7 +10,10 @@ WITH (
 TABLESPACE pg_default
 AS
  SELECT 12
-WITH NO DATA;
+WITH DATA;
 
 ALTER TABLE public."testmview_$%{}[]()&*^!/@`#"
     OWNER TO enterprisedb;
+
+COMMENT ON MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#"
+    IS 'comment1';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_mview_add_fillfactor_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_mview_add_fillfactor_msql.sql
index 0c51d157a..2ef36421f 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_mview_add_fillfactor_msql.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_mview_add_fillfactor_msql.sql
@@ -3,4 +3,4 @@ SET(
   FILLFACTOR = 18
 );
 
-REFRESH MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#" WITH NO DATA;
+REFRESH MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#" WITH DATA;
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_mview_add_table_parameter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_mview_add_table_parameter.sql
index ee5956d1a..874d20d5a 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_mview_add_table_parameter.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_mview_add_table_parameter.sql
@@ -11,7 +11,10 @@ WITH (
 TABLESPACE pg_default
 AS
  SELECT 12
-WITH NO DATA;
+WITH DATA;
 
 ALTER TABLE public."testmview_$%{}[]()&*^!/@`#"
     OWNER TO enterprisedb;
+
+COMMENT ON MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#"
+    IS 'comment1';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_mview_definition.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_mview_definition.sql
index 41f75fbe5..3d31af0d2 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_mview_definition.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_mview_definition.sql
@@ -6,7 +6,10 @@ CREATE MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#"
 TABLESPACE pg_default
 AS
  SELECT 12
-WITH DATA;
+WITH NO DATA;
 
 ALTER TABLE public."testmview_$%{}[]()&*^!/@`#"
     OWNER TO enterprisedb;
+
+COMMENT ON MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#"
+    IS 'comment1';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_mview_definition_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_mview_definition_msql.sql
index 2c1b637f4..16b772233 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_mview_definition_msql.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_mview_definition_msql.sql
@@ -2,3 +2,7 @@ DROP MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#";
 CREATE MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#"
  AS
 SELECT 12
+ WITH NO DATA;
+
+COMMENT ON MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#"
+    IS 'comment1';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_mview_remove_table_parameter.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_mview_remove_table_parameter.sql
index be0d59bea..da3c3849f 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_mview_remove_table_parameter.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/alter_mview_remove_table_parameter.sql
@@ -10,7 +10,10 @@ WITH (
 TABLESPACE pg_default
 AS
  SELECT 12
-WITH NO DATA;
+WITH DATA;
 
 ALTER TABLE public."testmview_$%{}[]()&*^!/@`#"
     OWNER TO enterprisedb;
+
+COMMENT ON MATERIALIZED VIEW public."testmview_$%{}[]()&*^!/@`#"
+    IS 'comment1';
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/test_mview.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/test_mview.json
index b945afacb..4ea610331 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/test_mview.json
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/ppas/9.4_plus/test_mview.json
@@ -205,7 +205,7 @@
       "msql_endpoint": "NODE-mview.msql_id",
       "data": {
         "fillfactor": "18",
-        "with_data": false
+        "with_data": true
       },
       "expected_sql_file": "alter_mview_add_fillfactor.sql",
       "expected_msql_file": "alter_mview_add_fillfactor_msql.sql"
diff --git a/web/pgadmin/browser/static/js/node.js b/web/pgadmin/browser/static/js/node.js
index 90e4fb611..8e1be9661 100644
--- a/web/pgadmin/browser/static/js/node.js
+++ b/web/pgadmin/browser/static/js/node.js
@@ -1305,6 +1305,40 @@ define('pgadmin.browser.node', [
           }
         }.bind(panel),
 
+        warnBeforeAttributeChange = function(yes_callback) {
+          var j = this.$container.find('.obj_properties').first(),
+            view = j && j.data('obj-view'),
+            self = this;
+
+          if (view && view.model && view.model.warn_before_save) {
+            let warn_text;
+            warn_text = gettext(view.model.warn_before_save);
+            if(view.model.sessChanged()){
+              Alertify.confirm(
+                gettext('Warning'),
+                warn_text,
+                function() {
+                  setTimeout(function(){
+                    yes_callback();
+                  }.bind(self), 50);
+                  return true;
+                },
+                function() {
+                  return true;
+                }
+              ).set('labels', {
+                ok: gettext('Yes'),
+                cancel: gettext('No'),
+              }).show();
+            } else {
+              return true;
+            }
+          } else {
+            yes_callback();
+            return true;
+          }
+        }.bind(panel),
+
         onSave = function(view, saveBtn) {
           var m = view.model,
             d = m.toJSON(true),
@@ -1498,7 +1532,14 @@ define('pgadmin.browser.node', [
               register: function(btn) {
                 // Save the changes
                 btn.on('click',() => {
-                  onSave.call(this, view, btn);
+                  warnBeforeAttributeChange.call(
+                    panel,
+                    function() {
+                      setTimeout(function() {
+                        onSave.call(this, view, btn);
+                      }, 0);
+                    }
+                  );
                 });
               },
             }], 'footer', 'pg-prop-btn-group-below');


^ permalink  raw  reply  [nested|flat] 2+ messages in thread

* Re: [RM4396] Definition update of MATERIALIZED VIEW loses indexes
  2019-11-27 10:14 [RM4396] Definition update of MATERIALIZED VIEW loses indexes Rahul Shirsat <[email protected]>
@ 2019-12-02 07:02 ` Akshay Joshi <[email protected]>
  0 siblings, 0 replies; 2+ messages in thread

From: Akshay Joshi @ 2019-12-02 07:02 UTC (permalink / raw)
  To: Rahul Shirsat <[email protected]>; +Cc: pgadmin-hackers

Thanks, patch applied with some modification. Fixed Jenkins build for views

On Wed, Nov 27, 2019 at 3:44 PM Rahul Shirsat <
[email protected]> wrote:

> Hi Hackers,
>
> Please find the patch for the materialized view as per defined in the bug.
>
> --
> *Rahul Shirsat*
> Software Engineer | EnterpriseDB Corporation.
>


-- 
*Thanks & Regards*
*Akshay Joshi*

*Sr. Software Architect*
*EnterpriseDB Software India Private Limited*
*Mobile: +91 976-788-8246*


^ permalink  raw  reply  [nested|flat] 2+ messages in thread


end of thread, other threads:[~2019-12-02 07:02 UTC | newest]

Thread overview: 2+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2019-11-27 10:14 [RM4396] Definition update of MATERIALIZED VIEW loses indexes Rahul Shirsat <[email protected]>
2019-12-02 07:02 ` Akshay Joshi <[email protected]>

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox