diff --git a/web/pgadmin/feature_tests/view_data_dml_queries.py b/web/pgadmin/feature_tests/view_data_dml_queries.py index 0423ec1..aa75b6e 100644 --- a/web/pgadmin/feature_tests/view_data_dml_queries.py +++ b/web/pgadmin/feature_tests/view_data_dml_queries.py @@ -54,9 +54,9 @@ class CheckForViewDataTest(BaseFeatureTest): # query for creating 'defaults_text' table defaults_query = """ -CREATE TABLE public.defaults +CREATE TABLE public.defaults_{0} ( - id serial NOT NULL, + {1} serial NOT NULL, number_defaults numeric(100) DEFAULT 1, number_null numeric(100), text_defaults text COLLATE pg_catalog."default" @@ -77,7 +77,7 @@ CREATE TABLE public.defaults int_arr_empty integer[], boolean_arr boolean[], boolean_arr_null boolean[], - CONSTRAINT defaults_pkey PRIMARY KEY (id) + CONSTRAINT defaults_pkey_{0} PRIMARY KEY ({1}) ) """ @@ -100,10 +100,12 @@ CREATE TABLE public.defaults test_utils.create_database(self.server, "acceptance_test_db") # Create pre-requisite table - test_utils.create_table_with_query( - self.server, - "acceptance_test_db", - CheckForViewDataTest.defaults_query) + for k, v in { 1: 'id', 2:'"ID"' }.items(): + test_utils.create_table_with_query( + self.server, + "acceptance_test_db", + CheckForViewDataTest.defaults_query.format(k, v)) + # Initialize an instance of WebDriverWait with timeout of 3 seconds self.wait = WebDriverWait(self.driver, 3) @@ -111,18 +113,20 @@ CREATE TABLE public.defaults self.page.wait_for_spinner_to_disappear() self.page.add_server(self.server) self._tables_node_expandable() - self.page.select_tree_item('defaults') - # Open Object -> View/Edit data - self._view_data_grid() + # iterate on both tables + for cnt in (1,2): + self.page.select_tree_item('defaults_{0}'.format(str(cnt))) + # Open Object -> View/Edit data + self._view_data_grid() - self.page.wait_for_query_tool_loading_indicator_to_disappear() - # Run test to insert a new row in table with default values - self._add_row() - self._verify_row_data(True) + self.page.wait_for_query_tool_loading_indicator_to_disappear() + # Run test to insert a new row in table with default values + self._add_row() + self._verify_row_data(True) - # Run test to copy/paste a row - self._copy_paste_row() - self.page.close_data_grid() + # Run test to copy/paste a row + self._copy_paste_row() + self.page.close_data_grid() def after(self): self.page.remove_server(self.server) @@ -235,7 +239,7 @@ CREATE TABLE public.defaults self.page.driver.find_element_by_link_text("View/Edit Data") ).perform() self.page.find_by_partial_link_text("All Rows").click() - + time.sleep(1) # wait until datagrid frame is loaded. self.page.click_tab('Edit Data -') diff --git a/web/pgadmin/tools/sqleditor/__init__.py b/web/pgadmin/tools/sqleditor/__init__.py index 74bc4d1..6db814c 100644 --- a/web/pgadmin/tools/sqleditor/__init__.py +++ b/web/pgadmin/tools/sqleditor/__init__.py @@ -529,12 +529,17 @@ def start_query_tool(trans_id): trans_id: unique transaction id """ - sql = extract_sql_from_network_parameters(request.data, request.args, request.form) + sql = extract_sql_from_network_parameters( + request.data, request.args, request.form + ) - return StartRunningQuery(blueprint, current_app).execute(sql, trans_id, session) + return StartRunningQuery(blueprint, current_app).execute( + sql, trans_id, session + ) -def extract_sql_from_network_parameters(request_data, request_arguments, request_form_data): +def extract_sql_from_network_parameters(request_data, request_arguments, + request_form_data): if request_data: sql_parameters = json.loads(request_data, encoding='utf-8') if type(sql_parameters) is str: @@ -741,15 +746,17 @@ def poll(trans_id): typname == 'character varying' ): typname = typname + '(' + \ - str(col_info['internal_size']) + \ - ')' + str( + col_info['internal_size'] + ) + ')' elif ( typname == 'character[]' or typname == 'character varying[]' ): typname = typname[:-2] + '(' + \ - str(col_info['internal_size']) + \ - ')[]' + str( + col_info['internal_size'] + ) + ')[]' col_info['type_name'] = typname diff --git a/web/pgadmin/tools/sqleditor/command.py b/web/pgadmin/tools/sqleditor/command.py index dff8b92..8cc96e0 100644 --- a/web/pgadmin/tools/sqleditor/command.py +++ b/web/pgadmin/tools/sqleditor/command.py @@ -533,8 +533,7 @@ class TableCommand(GridCommand): for each_col in columns_info: if ( columns_info[each_col]['not_null'] and - not columns_info[each_col][ - 'has_default_val'] + not columns_info[each_col]['has_default_val'] ): column_data[each_col] = None column_type[each_col] =\ @@ -595,8 +594,7 @@ class TableCommand(GridCommand): "/".join([self.sql_path, 'select.sql']), object_name=self.object_name, nsp_name=self.nsp_name, - pk_names=pk_names.split(",") if pk_names - else None, + primary_keys=primary_keys, has_oids=has_oids ) diff --git a/web/pgadmin/tools/sqleditor/templates/sqleditor/sql/default/select.sql b/web/pgadmin/tools/sqleditor/templates/sqleditor/sql/default/select.sql index 45f364a..97329cd 100644 --- a/web/pgadmin/tools/sqleditor/templates/sqleditor/sql/default/select.sql +++ b/web/pgadmin/tools/sqleditor/templates/sqleditor/sql/default/select.sql @@ -3,7 +3,7 @@ SELECT {% if has_oids %}oid, {% endif %}* FROM {{ conn|qtIdent(nsp_name, object_ WHERE {% if has_oids %} oid = %(oid)s -{% elif pk_names %} - {% for pk in pk_names %} +{% elif primary_keys|length > 0 %} + {% for pk in primary_keys %} {% if not loop.first %} AND {% endif %}{{ conn|qtIdent(pk) }} = %({{ pk }})s{% endfor %} {% endif %};