Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1et72E-0004CW-J2 for pgadmin-hackers@arkaria.postgresql.org; Tue, 06 Mar 2018 07:29:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1et72A-00055C-Hh for pgadmin-hackers@arkaria.postgresql.org; Tue, 06 Mar 2018 07:29:14 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1et729-000551-UF for pgadmin-hackers@lists.postgresql.org; Tue, 06 Mar 2018 07:29:14 +0000 Received: from mail-io0-x235.google.com ([2607:f8b0:4001:c06::235]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1et725-0007wY-KA for pgadmin-hackers@postgresql.org; Tue, 06 Mar 2018 07:29:12 +0000 Received: by mail-io0-x235.google.com with SMTP id p78so20967653iod.13 for ; Mon, 05 Mar 2018 23:29:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=E5PSHB4e49Du7MId657M5DoSOG/maIcEup9LdM9nSF0=; b=BuhRrGdIO+x3V8PB1a72B4It+2rgWno4/XAdkG2MKyBDskfQQVN9EhefKtJ5aH2EGW z8ykRJ+Hi9ivladrAjOuj6iFBgFOCc66uzE2omxOwi097Z9BhLg2xe9GLpvmY73OmDOh AfdkPqm+t37jJfc/wD9IG1B9p+kiD+uzHENZff49Rsu0SBpCcledXSI8O4CFczFbPF1f Mz0Jt2d7YDPt4w4t5y6oVE0qyD/Stig17YeySbF8McUw0WBt+6DXjZihPHKZbKvW3Mop bHsm2RooL47aDVPf/xIbgmYB1oMyx4zxFUTZdk+L+1trB1ol4WqZA48Oo7Uluu+Cz3cl HjvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=E5PSHB4e49Du7MId657M5DoSOG/maIcEup9LdM9nSF0=; b=jXfD342CRAZnJcF54SG4shCAOiUNgowr8e+wNBxVn5VSN8nzhn92PyXqQQ8HVE8tXw N0CeD/EZOtOwCgxG6JmdsUxVzbIt+KsXrJYKPOk0nHZs5vp8xDgEMxr136boffKw1RLG 5bJc+ssAQPesEpIJ6rk10h3zDqQjFIN3FTwFLG0xneUwm/oPBWIls2x7YiPqa2lug7zF rYRHPoK+Q/6rTrTYkXnOfKzgNY8vlZZm9h7aeMndKbcHcck1RfnyZQsMUl4NKmX6l3hw jt7B+xPN5OzaQwVsamsnA3A7hyGaM0Vfy0GVyqs+slQJF9qZ0QDhGT6bSmaK7UphJ079 dvqw== X-Gm-Message-State: APf1xPBG6VFnvoApzdp6HM8OfJ3TtUA8d8wCoyhHo8BVPlcRS389eRhd NeCxViSuyiLuolsJJij7sKF5OM09mJtawdup7RydZ+dz X-Google-Smtp-Source: AG47ELuq2SgYC4H7QzeCUWodKzDxycyZ5C/0+9ZUEApY8jT8IT3sl5TnSaAER5nW7LGJXomzLTeZbFC1mluiotHBIN4= X-Received: by 10.107.165.17 with SMTP id o17mr20008030ioe.87.1520321347790; Mon, 05 Mar 2018 23:29:07 -0800 (PST) MIME-Version: 1.0 Received: by 10.2.136.130 with HTTP; Mon, 5 Mar 2018 23:29:07 -0800 (PST) In-Reply-To: References: From: Neel Patel Date: Tue, 6 Mar 2018 12:59:07 +0530 Message-ID: Subject: Re: pgAdmin 4 commit: Support for external tables in GPDB. Fixes #3168 To: jdealmeidapereira@pivotal.io Cc: pgadmin-hackers , Dave Page Content-Type: multipart/alternative; boundary="001a1141fb12e141070566b965df" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --001a1141fb12e141070566b965df Content-Type: text/plain; charset="UTF-8" Hi Joao, I ran the testsuite in windows 10 with Python 3.4 and it fails for external tables. Linux it is working fine. Let me know if I miss anything. Please check the below logs. python runtests.py --pkg browser --exclude feature_tests ######## ====================================================================== ERROR: runTest (pgadmin.browser.server_groups.servers.databases.schemas.tables.tests.test_template_create.TestTemplateCreate) When rendering GreenPlum 5.3 template, when no distribution is present, when no primary key is present, it returns "DISTRIBUTED RANDOMLY" ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\Projects\pgadmin4\web\pgadmin\browser\server_groups\servers\databases\schemas\tables\tests\test_template_create.py", line 99, in runTest self.template_path, **self.input_parameters) File "C:\Projects\venv_pgadmin4_py_3_4\lib\site-packages\flask\templating.py", line 133, in render_template return _render(ctx.app.jinja_env.get_or_select_template(template_name_or_list), File "C:\Projects\venv_pgadmin4_py_3_4\lib\site-packages\jinja2\environment.py", line 830, in get_or_select_template return self.get_template(template_name_or_list, parent, globals) File "C:\Projects\venv_pgadmin4_py_3_4\lib\site-packages\jinja2\environment.py", line 791, in get_template return self._load_template(name, self.make_globals(globals)) File "C:\Projects\venv_pgadmin4_py_3_4\lib\site-packages\jinja2\environment.py", line 765, in _load_template template = self.loader.load(self, name, globals) File "C:\Projects\venv_pgadmin4_py_3_4\lib\site-packages\jinja2\loaders.py", line 113, in load source, filename, uptodate = self.get_source(environment, name) File "C:\Projects\venv_pgadmin4_py_3_4\lib\site-packages\flask\templating.py", line 57, in get_source return self._get_source_fast(environment, template) File "C:\Projects\venv_pgadmin4_py_3_4\lib\site-packages\flask\templating.py", line 85, in _get_source_fast raise TemplateNotFound(template) jinja2.exceptions.TemplateNotFound: table\sql\gpdb_5.0_plus\create.sql ====================================================================== ERROR: runTest (pgadmin.browser.server_groups.servers.databases.schemas.tables.tests.test_template_create.TestTemplateCreate) When rendering GreenPlum 5.3 template, when no distribution is present, when primary key is present, it returns "DISTRIBUTED BY (attr_primary_key)" ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\Projects\pgadmin4\web\pgadmin\browser\server_groups\servers\databases\schemas\tables\tests\test_template_create.py", line 99, in runTest self.template_path, **self.input_parameters) File "C:\Projects\venv_pgadmin4_py_3_4\lib\site-packages\flask\templating.py", line 133, in render_template return _render(ctx.app.jinja_env.get_or_select_template(template_name_or_list), File "C:\Projects\venv_pgadmin4_py_3_4\lib\site-packages\jinja2\environment.py", line 830, in get_or_select_template return self.get_template(template_name_or_list, parent, globals) File "C:\Projects\venv_pgadmin4_py_3_4\lib\site-packages\jinja2\environment.py", line 791, in get_template return self._load_template(name, self.make_globals(globals)) File "C:\Projects\venv_pgadmin4_py_3_4\lib\site-packages\jinja2\environment.py", line 765, in _load_template template = self.loader.load(self, name, globals) File "C:\Projects\venv_pgadmin4_py_3_4\lib\site-packages\jinja2\loaders.py", line 113, in load source, filename, uptodate = self.get_source(environment, name) File "C:\Projects\venv_pgadmin4_py_3_4\lib\site-packages\flask\templating.py", line 57, in get_source return self._get_source_fast(environment, template) File "C:\Projects\venv_pgadmin4_py_3_4\lib\site-packages\flask\templating.py", line 85, in _get_source_fast raise TemplateNotFound(template) jinja2.exceptions.TemplateNotFound: table\sql\gpdb_5.0_plus\create.sql ====================================================================== ERROR: runTest (pgadmin.browser.server_groups.servers.databases.schemas.tables.tests.test_template_create.TestTemplateCreate) When rendering GreenPlum 5.3 template, when distribution is present, it returns "DISTRIBUTED BY (attr1, attr2, attr4)" ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\Projects\pgadmin4\web\pgadmin\browser\server_groups\servers\databases\schemas\tables\tests\test_template_create.py", line 99, in runTest self.template_path, **self.input_parameters) File "C:\Projects\venv_pgadmin4_py_3_4\lib\site-packages\flask\templating.py", line 133, in render_template return _render(ctx.app.jinja_env.get_or_select_template(template_name_or_list), File "C:\Projects\venv_pgadmin4_py_3_4\lib\site-packages\jinja2\environment.py", line 830, in get_or_select_template return self.get_template(template_name_or_list, parent, globals) File "C:\Projects\venv_pgadmin4_py_3_4\lib\site-packages\jinja2\environment.py", line 791, in get_template return self._load_template(name, self.make_globals(globals)) File "C:\Projects\venv_pgadmin4_py_3_4\lib\site-packages\jinja2\environment.py", line 765, in _load_template template = self.loader.load(self, name, globals) File "C:\Projects\venv_pgadmin4_py_3_4\lib\site-packages\jinja2\loaders.py", line 113, in load source, filename, uptodate = self.get_source(environment, name) File "C:\Projects\venv_pgadmin4_py_3_4\lib\site-packages\flask\templating.py", line 57, in get_source return self._get_source_fast(environment, template) File "C:\Projects\venv_pgadmin4_py_3_4\lib\site-packages\flask\templating.py", line 85, in _get_source_fast raise TemplateNotFound(template) jinja2.exceptions.TemplateNotFound: table\sql\gpdb_5.0_plus\create.sql ====================================================================== ERROR: runTest (pgadmin.browser.tests.test_change_password.ChangePasswordTestCase) TestCase for Changing Valid_Password ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\Projects\pgadmin4\web\pgadmin\browser\tests\test_change_password.py", line 91, in runTest user_id = json.loads(response.data.decode('utf-8'))['id'] KeyError: 'id' ====================================================================== FAIL: runTest (pgadmin.browser.server_groups.servers.databases.external_tables.tests.test_external_tables_view.TestExternalTablesView) #nodes When retrieving the nodes and the database does not have external tables, it return no child nodes and status 200 ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\Python34\Lib\unittest\mock.py", line 1142, in patched return func(*args, **keywargs) File "C:\Projects\pgadmin4\web\pgadmin\browser\server_groups\servers\databases\external_tables\tests\test_external_tables_view.py", line 314, in runTest self.__test_nodes() File "C:\Python34\Lib\unittest\mock.py", line 1142, in patched return func(*args, **keywargs) File "C:\Projects\pgadmin4\web\pgadmin\browser\server_groups\servers\databases\external_tables\tests\test_external_tables_view.py", line 367, in __test_nodes self.expect_render_template_called_with File "C:\Python34\Lib\unittest\mock.py", line 777, in assert_called_with raise AssertionError(_error_message()) from cause AssertionError: Expected call: render_template('sql/#gpdb#80323#/list.sql') Actual call: render_template('sql/#gpdb#80323#\\list.sql') ====================================================================== FAIL: runTest (pgadmin.browser.server_groups.servers.databases.external_tables.tests.test_external_tables_view.TestExternalTablesView) #nodes When retrieving the nodes and an error happens while executing the query, it return an internal server error and status 500 ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\Python34\Lib\unittest\mock.py", line 1142, in patched return func(*args, **keywargs) File "C:\Projects\pgadmin4\web\pgadmin\browser\server_groups\servers\databases\external_tables\tests\test_external_tables_view.py", line 314, in runTest self.__test_nodes() File "C:\Python34\Lib\unittest\mock.py", line 1142, in patched return func(*args, **keywargs) File "C:\Projects\pgadmin4\web\pgadmin\browser\server_groups\servers\databases\external_tables\tests\test_external_tables_view.py", line 367, in __test_nodes self.expect_render_template_called_with File "C:\Python34\Lib\unittest\mock.py", line 777, in assert_called_with raise AssertionError(_error_message()) from cause AssertionError: Expected call: render_template('sql/#gpdb#80323#/list.sql') Actual call: render_template('sql/#gpdb#80323#\\list.sql') ====================================================================== FAIL: runTest (pgadmin.browser.server_groups.servers.databases.external_tables.tests.test_external_tables_view.TestExternalTablesView) #nodes When retrieving the nodes and the database has 2 external tables, it return 2 child nodes and status 200 ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\Python34\Lib\unittest\mock.py", line 1142, in patched return func(*args, **keywargs) File "C:\Projects\pgadmin4\web\pgadmin\browser\server_groups\servers\databases\external_tables\tests\test_external_tables_view.py", line 314, in runTest self.__test_nodes() File "C:\Python34\Lib\unittest\mock.py", line 1142, in patched return func(*args, **keywargs) File "C:\Projects\pgadmin4\web\pgadmin\browser\server_groups\servers\databases\external_tables\tests\test_external_tables_view.py", line 367, in __test_nodes self.expect_render_template_called_with File "C:\Python34\Lib\unittest\mock.py", line 777, in assert_called_with raise AssertionError(_error_message()) from cause AssertionError: Expected call: render_template('sql/#gpdb#80323#/list.sql') Actual call: render_template('sql/#gpdb#80323#\\list.sql') ====================================================================== FAIL: runTest (pgadmin.browser.server_groups.servers.databases.external_tables.tests.test_external_tables_view.TestExternalTablesView) #node When retrieving the information about 1 external table and an error happens while executing the query, it return an internal server error and status 500 ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\Python34\Lib\unittest\mock.py", line 1142, in patched return func(*args, **keywargs) File "C:\Projects\pgadmin4\web\pgadmin\browser\server_groups\servers\databases\external_tables\tests\test_external_tables_view.py", line 316, in runTest self.__test_node() File "C:\Python34\Lib\unittest\mock.py", line 1142, in patched return func(*args, **keywargs) File "C:\Projects\pgadmin4\web\pgadmin\browser\server_groups\servers\databases\external_tables\tests\test_external_tables_view.py", line 393, in __test_node **self.expect_render_template_called_with File "C:\Python34\Lib\unittest\mock.py", line 777, in assert_called_with raise AssertionError(_error_message()) from cause AssertionError: Expected call: render_template(external_table_id=11, template_name_or_list='sql/#gpdb#80323#/node.sql') Actual call: render_template(external_table_id=11, template_name_or_list='sql/#gpdb#80323#\\node.sql') ====================================================================== FAIL: runTest (pgadmin.browser.server_groups.servers.databases.external_tables.tests.test_external_tables_view.TestExternalTablesView) #node When retrieving the information about 1 external table and table does not exist, it return an error message and status 404 ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\Python34\Lib\unittest\mock.py", line 1142, in patched return func(*args, **keywargs) File "C:\Projects\pgadmin4\web\pgadmin\browser\server_groups\servers\databases\external_tables\tests\test_external_tables_view.py", line 316, in runTest self.__test_node() File "C:\Python34\Lib\unittest\mock.py", line 1142, in patched return func(*args, **keywargs) File "C:\Projects\pgadmin4\web\pgadmin\browser\server_groups\servers\databases\external_tables\tests\test_external_tables_view.py", line 393, in __test_node **self.expect_render_template_called_with File "C:\Python34\Lib\unittest\mock.py", line 777, in assert_called_with raise AssertionError(_error_message()) from cause AssertionError: Expected call: render_template(external_table_id=11, template_name_or_list='sql/#gpdb#80323#/node.sql') Actual call: render_template(external_table_id=11, template_name_or_list='sql/#gpdb#80323#\\node.sql') ====================================================================== FAIL: runTest (pgadmin.browser.server_groups.servers.databases.external_tables.tests.test_external_tables_view.TestExternalTablesView) #nodes When retrieving the information about 1 external table and the table exists, it return external node information and status 200 ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\Python34\Lib\unittest\mock.py", line 1142, in patched return func(*args, **keywargs) File "C:\Projects\pgadmin4\web\pgadmin\browser\server_groups\servers\databases\external_tables\tests\test_external_tables_view.py", line 316, in runTest self.__test_node() File "C:\Python34\Lib\unittest\mock.py", line 1142, in patched return func(*args, **keywargs) File "C:\Projects\pgadmin4\web\pgadmin\browser\server_groups\servers\databases\external_tables\tests\test_external_tables_view.py", line 393, in __test_node **self.expect_render_template_called_with File "C:\Python34\Lib\unittest\mock.py", line 777, in assert_called_with raise AssertionError(_error_message()) from cause AssertionError: Expected call: render_template(external_table_id=11, template_name_or_list='sql/#gpdb#80323#/node.sql') Actual call: render_template(external_table_id=11, template_name_or_list='sql/#gpdb#80323#\\node.sql') ====================================================================== FAIL: runTest (pgadmin.browser.server_groups.servers.databases.external_tables.tests.test_external_tables_view.TestExternalTablesView) #properties When retrieving the properties of a external table and the table exists, it return the properties and status 200 ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\Python34\Lib\unittest\mock.py", line 1142, in patched return func(*args, **keywargs) File "C:\Projects\pgadmin4\web\pgadmin\browser\server_groups\servers\databases\external_tables\tests\test_external_tables_view.py", line 320, in runTest self.__test_properties() File "C:\Python34\Lib\unittest\mock.py", line 1142, in patched return func(*args, **keywargs) File "C:\Projects\pgadmin4\web\pgadmin\browser\server_groups\servers\databases\external_tables\tests\test_external_tables_view.py", line 419, in __test_properties **self.expect_render_template_called_with File "C:\Python34\Lib\unittest\mock.py", line 777, in assert_called_with raise AssertionError(_error_message()) from cause AssertionError: Expected call: render_template(template_name_or_list='sql/#gpdb#80323#/get_table_information.sql', table_oid=11) Actual call: render_template(template_name_or_list='sql/#gpdb#80323#\\get_table_information.sql', table_oid=11) ---------------------------------------------------------------------- Ran 256 tests in 77.123s FAILED (failures=7, errors=4, skipped=25) ====================================================================== Test Result Summary ====================================================================== PostgreSQL 9.6: 234 tests passed 3 tests failed: TestExternalTablesView (#node When retrieving the information about 1 external table and table does not exist, it return an error message and status 404, #node When retrieving the information about 1 external table and an error happens while executing the query, it return an internal server error and status 500, #nodes When retrieving the nodes and the database has 2 external tables, it return 2 child nodes and status 200, #nodes When retrieving the information about 1 external table and the table exists, it return external node information and status 200, #nodes When retrieving the nodes and an error happens while executing the query, it return an internal server error and status 500, #properties When retrieving the properties of a external table and the table exists, it return the properties and status 200, #nodes When retrieving the nodes and the database does not have external tables, it return no child nodes and status 200) ChangePasswordTestCase (TestCase for Changing Valid_Password) TestTemplateCreate (When rendering GreenPlum 5.3 template, when no distribution is present, when no primary key is present, it returns "DISTRIBUTED RANDOMLY", When rendering GreenPlum 5.3 template, when distribution is present, it returns "DISTRIBUTED BY (attr1, attr2, attr4)", When rendering GreenPlum 5.3 template, when no distribution is present, when primary key is present, it returns "DISTRIBUTED BY (attr_primary_key)") 19 tests skipped: ResourceGroupsGetTestCase (Get resource groups) TableSpaceDeleteTestCase (Check Tablespace Node) ResourceGroupsDeleteTestCase (Delete resource groups) SynonymDeleteTestCase (Fetch synonym Node URL) TestSSLConnection (Test for SSL connection) PackageAddTestCase (Fetch Package Node URL) SynonymPutTestCase (Fetch synonym Node URL) TablespaceGetTestCase (Check Tablespace Node) SynonymAddTestCase (Default Node URL) PackagePutTestCase (Fetch Package Node URL) TableAddTestCase (Create Range partitioned table with 2 partitions, Create List partitioned table with 2 partitions) PackageGetTestCase (Fetch Package Node URL) PackageDeleteTestCase (Fetch Package Node URL) TableSpaceAddTestCase (Check Tablespace Node) ResourceGroupsAddTestCase (Add resource groups) SynonymGetTestCase (Fetch synonym Node URL) ResourceGroupsPutTestCase (Put resource groups) TableSpaceUpdateTestCase (Check Tablespace Node) TableUpdateTestCase (Attach partition to existing range partitioned table, Detach partition from existing range partitioned table, Create partitions of existing range partitioned table, Detach partition from existing list partitioned table, Create partitions of existing list partitioned table, Attach partition to existing list partitioned table) ====================================================================== ######## Thanks, Neel Patel On Fri, Mar 2, 2018 at 10:19 PM, Dave Page wrote: > Support for external tables in GPDB. Fixes #3168 > > Branch > ------ > master > > Details > ------- > https://git.postgresql.org/gitweb?p=pgadmin4.git;a=commitdiff;h= > 427314cfdfeb96c3a7835eab5a4d638903bc6dc3 > Author: Joao Pedro De Almeida Pereira > > Modified Files > -------------- > .../servers/databases/external_tables/__init__.py | 275 +++++++++++++ > .../databases/external_tables/actions/__init__.py | 0 > .../external_tables/actions/get_all_nodes.py | 4 + > .../databases/external_tables/mapping_utils.py | 165 ++++++++ > .../databases/external_tables/properties.py | 78 ++++ > .../external_tables/reverse_engineer_ddl.py | 69 ++++ > .../static/img/coll-external_table.svg | 1 + > .../external_tables/static/img/external_table.svg | 1 + > .../templates/sql/gpdb_5.0_plus/create.sql | 60 +++ > .../templates/sql/gpdb_5.0_plus/get_columns.sql | 12 + > .../sql/gpdb_5.0_plus/get_table_information.sql | 22 ++ > .../templates/sql/gpdb_5.0_plus/list.sql | 6 + > .../templates/sql/gpdb_5.0_plus/node.sql | 5 + > .../databases/external_tables/tests/__init__.py | 0 > .../tests/test_external_tables_module.py | 99 +++++ > .../tests/test_external_tables_view.py | 428 > +++++++++++++++++++++ > .../external_tables/tests/test_mapping_utils.py | 375 > ++++++++++++++++++ > .../external_tables/tests/test_properties.py | 156 ++++++++ > .../tests/test_reverse_engineer_ddl.py | 261 +++++++++++++ > .../tests/test_sql_template_create_integration.py | 0 > .../templates/table/sql/gpdb_5.0_plus/nodes.sql | 1 + > web/pgadmin/static/bundle/browser.js | 1 + > .../databases/external_tables/external_tables.js | 88 +++++ > .../servers/databases/external_tables/index.js | 18 + > web/pgadmin/tools/sqleditor/__init__.py | 1 + > .../external_tables/external_tables_spec.js | 56 +++ > web/webpack.config.js | 9 + > web/webpack.shim.js | 3 + > 28 files changed, 2194 insertions(+) > > --001a1141fb12e141070566b965df Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi=C2=A0Joao,

I ran= the testsuite in windows 10 with Python 3.4 and it fails for external tabl= es. Linux it is working fine. Let me know if I m= iss anything.

Please check the below logs.<= /div>

python runtests.py --pkg browser --exclude feature= _tests

########

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D
ERROR: runTest (pgadmin.browser.server_groups.ser= vers.databases.schemas.tables.tests.test_template_create.TestTemplateCreate= )
When rendering GreenPlum 5.3 template, when no distribution is = present, when no primary key is present, it returns "DISTRIBUTED RANDO= MLY"
-------------------------------------------------------= ---------------
Traceback (most recent call last):
=C2= =A0 File "C:\Projects\pgadmin4\web\pgadmin\browser\server_groups\serve= rs\databases\schemas\tables\tests\test_template_create.py", line 99, i= n runTest
=C2=A0 =C2=A0 self.template_path, **self.input_paramete= rs)
=C2=A0 File "C:\Projects\venv_pgadmin4_py_3_4\lib\site-p= ackages\flask\templating.py", line 133, in render_template
= =C2=A0 =C2=A0 return _render(ctx.app.jinja_env.get_or_select_template(templ= ate_name_or_list),
=C2=A0 File "C:\Projects\venv_pgadmin4_py= _3_4\lib\site-packages\jinja2\environment.py", line 830, in get_or_sel= ect_template
=C2=A0 =C2=A0 return self.get_template(template_name= _or_list, parent, globals)
=C2=A0 File "C:\Projects\venv_pga= dmin4_py_3_4\lib\site-packages\jinja2\environment.py", line 791, in ge= t_template
=C2=A0 =C2=A0 return self._load_template(name, self.ma= ke_globals(globals))
=C2=A0 File "C:\Projects\venv_pgadmin4_= py_3_4\lib\site-packages\jinja2\environment.py", line 765, in _load_te= mplate
=C2=A0 =C2=A0 template =3D self.loader.load(self, name, gl= obals)
=C2=A0 File "C:\Projects\venv_pgadmin4_py_3_4\lib\sit= e-packages\jinja2\loaders.py", line 113, in load
=C2=A0 =C2= =A0 source, filename, uptodate =3D self.get_source(environment, name)
=
=C2=A0 File "C:\Projects\venv_pgadmin4_py_3_4\lib\site-packages\f= lask\templating.py", line 57, in get_source
=C2=A0 =C2=A0 re= turn self._get_source_fast(environment, template)
=C2=A0 File &qu= ot;C:\Projects\venv_pgadmin4_py_3_4\lib\site-packages\flask\templating.py&q= uot;, line 85, in _get_source_fast
=C2=A0 =C2=A0 raise TemplateNo= tFound(template)
jinja2.exceptions.TemplateNotFound: table\sql\gp= db_5.0_plus\create.sql

=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
ERROR: runTest (pgadmin.browser= .server_groups.servers.databases.schemas.tables.tests.test_template_create.= TestTemplateCreate)
When rendering GreenPlum 5.3 template, when n= o distribution is present, when primary key is present, it returns "DI= STRIBUTED BY (attr_primary_key)"
---------------------------= -------------------------------------------
Traceback (most recen= t call last):
=C2=A0 File "C:\Projects\pgadmin4\web\pgadmin\= browser\server_groups\servers\databases\schemas\tables\tests\test_template_= create.py", line 99, in runTest
=C2=A0 =C2=A0 self.template_= path, **self.input_parameters)
=C2=A0 File "C:\Projects\venv= _pgadmin4_py_3_4\lib\site-packages\flask\templating.py", line 133, in = render_template
=C2=A0 =C2=A0 return _render(ctx.app.jinja_env.ge= t_or_select_template(template_name_or_list),
=C2=A0 File "C:= \Projects\venv_pgadmin4_py_3_4\lib\site-packages\jinja2\environment.py"= ;, line 830, in get_or_select_template
=C2=A0 =C2=A0 return self.= get_template(template_name_or_list, parent, globals)
=C2=A0 File = "C:\Projects\venv_pgadmin4_py_3_4\lib\site-packages\jinja2\environment= .py", line 791, in get_template
=C2=A0 =C2=A0 return self._l= oad_template(name, self.make_globals(globals))
=C2=A0 File "= C:\Projects\venv_pgadmin4_py_3_4\lib\site-packages\jinja2\environment.py&qu= ot;, line 765, in _load_template
=C2=A0 =C2=A0 template =3D self.= loader.load(self, name, globals)
=C2=A0 File "C:\Projects\ve= nv_pgadmin4_py_3_4\lib\site-packages\jinja2\loaders.py", line 113, in = load
=C2=A0 =C2=A0 source, filename, uptodate =3D self.get_source= (environment, name)
=C2=A0 File "C:\Projects\venv_pgadmin4_p= y_3_4\lib\site-packages\flask\templating.py", line 57, in get_source
=C2=A0 =C2=A0 return self._get_source_fast(environment, template)<= /div>
=C2=A0 File "C:\Projects\venv_pgadmin4_py_3_4\lib\site-packa= ges\flask\templating.py", line 85, in _get_source_fast
=C2= =A0 =C2=A0 raise TemplateNotFound(template)
jinja2.exceptions.Tem= plateNotFound: table\sql\gpdb_5.0_plus\create.sql

= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
ERRO= R: runTest (pgadmin.browser.server_groups.servers.databases.schemas.tables.= tests.test_template_create.TestTemplateCreate)
When rendering Gre= enPlum 5.3 template, when distribution is present, it returns "DISTRIB= UTED BY (attr1, attr2, attr4)"
-----------------------------= -----------------------------------------
Traceback (most recent = call last):
=C2=A0 File "C:\Projects\pgadmin4\web\pgadmin\br= owser\server_groups\servers\databases\schemas\tables\tests\test_template_cr= eate.py", line 99, in runTest
=C2=A0 =C2=A0 self.template_pa= th, **self.input_parameters)
=C2=A0 File "C:\Projects\venv_p= gadmin4_py_3_4\lib\site-packages\flask\templating.py", line 133, in re= nder_template
=C2=A0 =C2=A0 return _render(ctx.app.jinja_env.get_= or_select_template(template_name_or_list),
=C2=A0 File "C:\P= rojects\venv_pgadmin4_py_3_4\lib\site-packages\jinja2\environment.py",= line 830, in get_or_select_template
=C2=A0 =C2=A0 return self.ge= t_template(template_name_or_list, parent, globals)
=C2=A0 File &q= uot;C:\Projects\venv_pgadmin4_py_3_4\lib\site-packages\jinja2\environment.p= y", line 791, in get_template
=C2=A0 =C2=A0 return self._loa= d_template(name, self.make_globals(globals))
=C2=A0 File "C:= \Projects\venv_pgadmin4_py_3_4\lib\site-packages\jinja2\environment.py"= ;, line 765, in _load_template
=C2=A0 =C2=A0 template =3D self.lo= ader.load(self, name, globals)
=C2=A0 File "C:\Projects\venv= _pgadmin4_py_3_4\lib\site-packages\jinja2\loaders.py", line 113, in lo= ad
=C2=A0 =C2=A0 source, filename, uptodate =3D self.get_source(e= nvironment, name)
=C2=A0 File "C:\Projects\venv_pgadmin4_py_= 3_4\lib\site-packages\flask\templating.py", line 57, in get_source
=C2=A0 =C2=A0 return self._get_source_fast(environment, template)
=C2=A0 File "C:\Projects\venv_pgadmin4_py_3_4\lib\site-package= s\flask\templating.py", line 85, in _get_source_fast
=C2=A0 = =C2=A0 raise TemplateNotFound(template)
jinja2.exceptions.Templat= eNotFound: table\sql\gpdb_5.0_plus\create.sql

=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
ERROR: = runTest (pgadmin.browser.tests.test_change_password.ChangePasswordTestCase)=
TestCase for Changing Valid_Password
-----------------= -----------------------------------------------------
Traceback (= most recent call last):
=C2=A0 File "C:\Projects\pgadmin4\we= b\pgadmin\browser\tests\test_change_password.py", line 91, in runTest<= /div>
=C2=A0 =C2=A0 user_id =3D json.loads(response.data.decode('ut= f-8'))['id']
KeyError: 'id'

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=
FAIL: runTest (pgadmin.browser.server_groups.servers.databases.externa= l_tables.tests.test_external_tables_view.TestExternalTablesView)
= #nodes When retrieving the nodes and the database does not have external ta= bles, it return no child nodes and status 200
-------------------= ---------------------------------------------------
Traceback (mo= st recent call last):
=C2=A0 File "C:\Python34\Lib\unittest\= mock.py", line 1142, in patched
=C2=A0 =C2=A0 return func(*a= rgs, **keywargs)
=C2=A0 File "C:\Projects\pgadmin4\web\pgadm= in\browser\server_groups\servers\databases\external_tables\tests\test_exter= nal_tables_view.py", line 314, in runTest
=C2=A0 =C2=A0 self= .__test_nodes()
=C2=A0 File "C:\Python34\Lib\unittest\mock.p= y", line 1142, in patched
=C2=A0 =C2=A0 return func(*args, *= *keywargs)
=C2=A0 File "C:\Projects\pgadmin4\web\pgadmin\bro= wser\server_groups\servers\databases\external_tables\tests\test_external_ta= bles_view.py", line 367, in __test_nodes
=C2=A0 =C2=A0 self.= expect_render_template_called_with
=C2=A0 File "C:\Python34\= Lib\unittest\mock.py", line 777, in assert_called_with
=C2= =A0 =C2=A0 raise AssertionError(_error_message()) from cause
Asse= rtionError: Expected call: render_template('sql/#gpdb#80323#/list.sql&#= 39;)
Actual call: render_template('sql/#gpdb#80323#\\list.sql= ')

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D
FAIL: runTest (pgadmin.browser.server_groups.s= ervers.databases.external_tables.tests.test_external_tables_view.TestExtern= alTablesView)
#nodes When retrieving the nodes and an error happe= ns while executing the query, it return an internal server error and status= 500
------------------------------------------------------------= ----------
Traceback (most recent call last):
=C2=A0 Fi= le "C:\Python34\Lib\unittest\mock.py", line 1142, in patched
=C2=A0 =C2=A0 return func(*args, **keywargs)
=C2=A0 File &q= uot;C:\Projects\pgadmin4\web\pgadmin\browser\server_groups\servers\database= s\external_tables\tests\test_external_tables_view.py", line 314, in ru= nTest
=C2=A0 =C2=A0 self.__test_nodes()
=C2=A0 File &qu= ot;C:\Python34\Lib\unittest\mock.py", line 1142, in patched
= =C2=A0 =C2=A0 return func(*args, **keywargs)
=C2=A0 File "C:= \Projects\pgadmin4\web\pgadmin\browser\server_groups\servers\databases\exte= rnal_tables\tests\test_external_tables_view.py", line 367, in __test_n= odes
=C2=A0 =C2=A0 self.expect_render_template_called_with
<= div>=C2=A0 File "C:\Python34\Lib\unittest\mock.py", line 777, in = assert_called_with
=C2=A0 =C2=A0 raise AssertionError(_error_mess= age()) from cause
AssertionError: Expected call: render_template(= 'sql/#gpdb#80323#/list.sql')
Actual call: render_template= ('sql/#gpdb#80323#\\list.sql')

=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
FAIL: runTest= (pgadmin.browser.server_groups.servers.databases.external_tables.tests.tes= t_external_tables_view.TestExternalTablesView)
#nodes When retrie= ving the nodes and the database has 2 external tables, it return 2 child no= des and status 200
----------------------------------------------= ------------------------
Traceback (most recent call last):
=
=C2=A0 File "C:\Python34\Lib\unittest\mock.py", line 1142, i= n patched
=C2=A0 =C2=A0 return func(*args, **keywargs)
= =C2=A0 File "C:\Projects\pgadmin4\web\pgadmin\browser\server_groups\se= rvers\databases\external_tables\tests\test_external_tables_view.py", l= ine 314, in runTest
=C2=A0 =C2=A0 self.__test_nodes()
= =C2=A0 File "C:\Python34\Lib\unittest\mock.py", line 1142, in pat= ched
=C2=A0 =C2=A0 return func(*args, **keywargs)
=C2= =A0 File "C:\Projects\pgadmin4\web\pgadmin\browser\server_groups\serve= rs\databases\external_tables\tests\test_external_tables_view.py", line= 367, in __test_nodes
=C2=A0 =C2=A0 self.expect_render_template_c= alled_with
=C2=A0 File "C:\Python34\Lib\unittest\mock.py&quo= t;, line 777, in assert_called_with
=C2=A0 =C2=A0 raise Assertion= Error(_error_message()) from cause
AssertionError: Expected call:= render_template('sql/#gpdb#80323#/list.sql')
Actual call= : render_template('sql/#gpdb#80323#\\list.sql')

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
FAIL: runTest (pgadmin.browser.server_groups.servers.databases.external_t= ables.tests.test_external_tables_view.TestExternalTablesView)
#no= de When retrieving the information about 1 external table and an error happ= ens while executing the query, it return an internal server error and statu= s 500
-----------------------------------------------------------= -----------
Traceback (most recent call last):
=C2=A0 F= ile "C:\Python34\Lib\unittest\mock.py", line 1142, in patched
=C2=A0 =C2=A0 return func(*args, **keywargs)
=C2=A0 File &= quot;C:\Projects\pgadmin4\web\pgadmin\browser\server_groups\servers\databas= es\external_tables\tests\test_external_tables_view.py", line 316, in r= unTest
=C2=A0 =C2=A0 self.__test_node()
=C2=A0 File &qu= ot;C:\Python34\Lib\unittest\mock.py", line 1142, in patched
= =C2=A0 =C2=A0 return func(*args, **keywargs)
=C2=A0 File "C:= \Projects\pgadmin4\web\pgadmin\browser\server_groups\servers\databases\exte= rnal_tables\tests\test_external_tables_view.py", line 393, in __test_n= ode
=C2=A0 =C2=A0 **self.expect_render_template_called_with
=
=C2=A0 File "C:\Python34\Lib\unittest\mock.py", line 777, in= assert_called_with
=C2=A0 =C2=A0 raise AssertionError(_error_mes= sage()) from cause
AssertionError: Expected call: render_template= (external_table_id=3D11, template_name_or_list=3D'sql/#gpdb#80323#/node= .sql')
Actual call: render_template(external_table_id=3D11, t= emplate_name_or_list=3D'sql/#gpdb#80323#\\node.sql')

=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
FAIL: runTest (pgadmin.browser.server_groups.servers.databases.exte= rnal_tables.tests.test_external_tables_view.TestExternalTablesView)
#node When retrieving the information about 1 external table and table d= oes not exist, it return an error message and status 404
--------= --------------------------------------------------------------
Tr= aceback (most recent call last):
=C2=A0 File "C:\Python34\Li= b\unittest\mock.py", line 1142, in patched
=C2=A0 =C2=A0 ret= urn func(*args, **keywargs)
=C2=A0 File "C:\Projects\pgadmin= 4\web\pgadmin\browser\server_groups\servers\databases\external_tables\tests= \test_external_tables_view.py", line 316, in runTest
=C2=A0 = =C2=A0 self.__test_node()
=C2=A0 File "C:\Python34\Lib\unitt= est\mock.py", line 1142, in patched
=C2=A0 =C2=A0 return fun= c(*args, **keywargs)
=C2=A0 File "C:\Projects\pgadmin4\web\p= gadmin\browser\server_groups\servers\databases\external_tables\tests\test_e= xternal_tables_view.py", line 393, in __test_node
=C2=A0 =C2= =A0 **self.expect_render_template_called_with
=C2=A0 File "C= :\Python34\Lib\unittest\mock.py", line 777, in assert_called_with
=C2=A0 =C2=A0 raise AssertionError(_error_message()) from cause
=
AssertionError: Expected call: render_template(external_table_id=3D11,= template_name_or_list=3D'sql/#gpdb#80323#/node.sql')
Act= ual call: render_template(external_table_id=3D11, template_name_or_list=3D&= #39;sql/#gpdb#80323#\\node.sql')

=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
FAIL: runTest (p= gadmin.browser.server_groups.servers.databases.external_tables.tests.test_e= xternal_tables_view.TestExternalTablesView)
#nodes When retrievin= g the information about 1 external table and the table exists, it return ex= ternal node information and status 200
--------------------------= --------------------------------------------
Traceback (most rece= nt call last):
=C2=A0 File "C:\Python34\Lib\unittest\mock.py= ", line 1142, in patched
=C2=A0 =C2=A0 return func(*args, **= keywargs)
=C2=A0 File "C:\Projects\pgadmin4\web\pgadmin\brow= ser\server_groups\servers\databases\external_tables\tests\test_external_tab= les_view.py", line 316, in runTest
=C2=A0 =C2=A0 self.__test= _node()
=C2=A0 File "C:\Python34\Lib\unittest\mock.py",= line 1142, in patched
=C2=A0 =C2=A0 return func(*args, **keywarg= s)
=C2=A0 File "C:\Projects\pgadmin4\web\pgadmin\browser\ser= ver_groups\servers\databases\external_tables\tests\test_external_tables_vie= w.py", line 393, in __test_node
=C2=A0 =C2=A0 **self.expect_= render_template_called_with
=C2=A0 File "C:\Python34\Lib\uni= ttest\mock.py", line 777, in assert_called_with
=C2=A0 =C2= =A0 raise AssertionError(_error_message()) from cause
AssertionEr= ror: Expected call: render_template(external_table_id=3D11, template_name_o= r_list=3D'sql/#gpdb#80323#/node.sql')
Actual call: render= _template(external_table_id=3D11, template_name_or_list=3D'sql/#gpdb#80= 323#\\node.sql')

=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
FAIL: runTest (pgadmin.browser.= server_groups.servers.databases.external_tables.tests.test_external_tables_= view.TestExternalTablesView)
#properties When retrieving the prop= erties of a external table and the table exists, it return the properties a= nd status 200
---------------------------------------------------= -------------------
Traceback (most recent call last):
= =C2=A0 File "C:\Python34\Lib\unittest\mock.py", line 1142, in pat= ched
=C2=A0 =C2=A0 return func(*args, **keywargs)
=C2= =A0 File "C:\Projects\pgadmin4\web\pgadmin\browser\server_groups\serve= rs\databases\external_tables\tests\test_external_tables_view.py", line= 320, in runTest
=C2=A0 =C2=A0 self.__test_properties()
=C2=A0 File "C:\Python34\Lib\unittest\mock.py", line 1142, in pa= tched
=C2=A0 =C2=A0 return func(*args, **keywargs)
=C2= =A0 File "C:\Projects\pgadmin4\web\pgadmin\browser\server_groups\serve= rs\databases\external_tables\tests\test_external_tables_view.py", line= 419, in __test_properties
=C2=A0 =C2=A0 **self.expect_render_tem= plate_called_with
=C2=A0 File "C:\Python34\Lib\unittest\mock= .py", line 777, in assert_called_with
=C2=A0 =C2=A0 raise As= sertionError(_error_message()) from cause
AssertionError: Expecte= d call: render_template(template_name_or_list=3D'sql/#gpdb#80323#/get_t= able_information.sql', table_oid=3D11)
Actual call: render_te= mplate(template_name_or_list=3D'sql/#gpdb#80323#\\get_table_information= .sql', table_oid=3D11)

-----------------------= -----------------------------------------------
Ran 256 tests in = 77.123s

FAILED (failures=3D7, errors=3D4, skipped= =3D25)

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D
Test Result Summary
=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

Post= greSQL 9.6:

=C2=A0 =C2=A0 =C2=A0 =C2=A0 234 tests = passed
=C2=A0 =C2=A0 =C2=A0 =C2=A0 3 tests failed:
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 TestExternalTablesView= (#node When retrieving the information about 1 external table and table do= es not exist, it return an error message and status 404,
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #node When retr= ieving the information about 1 external table and an error happens while ex= ecuting the query, it return an internal server error and status 500,
=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #node= s When retrieving the nodes and the database has 2 external tables, it retu= rn 2 child nodes and status 200,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #nodes When retrieving the information a= bout 1 external table and the table exists, it return external node informa= tion and status 200,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 #nodes When retrieving the nodes and an error happ= ens while executing the query, it return an internal server error and statu= s 500,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 #properties When retrieving the properties of a external table a= nd the table exists, it return the properties and status 200,
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #nodes When = retrieving the nodes and the database does not have external tables, it ret= urn no child nodes and status 200)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 ChangePasswordTestCase (TestCase for Changing V= alid_Password)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 TestTemplateCreate (When rendering GreenPlum 5.3 template, when no d= istribution is present, when no primary key is present, it returns "DI= STRIBUTED RANDOMLY",
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 When rendering GreenPlum 5.3 template, when dis= tribution is present, it returns "DISTRIBUTED BY (attr1, attr2, attr4)= ",
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 When rendering GreenPlum 5.3 template, when no distribution is p= resent, when primary key is present, it returns "DISTRIBUTED BY (attr_= primary_key)")
=C2=A0 =C2=A0 =C2=A0 =C2=A0 19 tests skipped:=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Resource= GroupsGetTestCase (Get resource groups)
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 TableSpaceDeleteTestCase (Check Tablespace = Node)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Res= ourceGroupsDeleteTestCase (Delete resource groups)
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 SynonymDeleteTestCase (Fetch syno= nym Node URL)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 TestSSLConnection (Test for SSL connection)
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 PackageAddTestCase (Fetch Package= Node URL)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 SynonymPutTestCase (Fetch synonym Node URL)
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 TablespaceGetTestCase (Check Tablesp= ace Node)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= SynonymAddTestCase (Default Node URL)
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 PackagePutTestCase (Fetch Package Node URL)=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 TableAdd= TestCase (Create Range partitioned table with 2 partitions,
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Create List = partitioned table with 2 partitions)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 PackageGetTestCase (Fetch Package Node URL)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 PackageDelet= eTestCase (Fetch Package Node URL)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 TableSpaceAddTestCase (Check Tablespace Node)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ResourceGr= oupsAddTestCase (Add resource groups)
=C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 SynonymGetTestCase (Fetch synonym Node URL)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ResourceGro= upsPutTestCase (Put resource groups)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 TableSpaceUpdateTestCase (Check Tablespace Node= )
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 TableUp= dateTestCase (Attach partition to existing range partitioned table,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Detac= h partition from existing range partitioned table,
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Create partitions of e= xisting range partitioned table,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Detach partition from existing list part= itioned table,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 Create partitions of existing list partitioned table,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 A= ttach partition to existing list partitioned table)

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

########


Thanks,
=
Neel Patel

On Fri, Mar 2, 2018 at 10:19 PM= , Dave Page <dpage@pgadmin.org> wrote:
Support for external tables in GPDB. Fixes #3168

Branch
------
master

Details
-------
https://git.postgresql.org/gitweb?p=3Dpgadmin4.git;a=3Dcommitdiff;h=3D427314cfdfeb96c3a7835eab5a4d638903bc6dc3
Author: Joao Pedro De Almeida Pereira <jdealmeidapereira@pivotal.io>

Modified Files
--------------
.../servers/databases/external_tables/__init__.py=C2=A0 | 275 ++++++++= +++++
.../databases/external_tables/actions/__init__.py=C2=A0 |=C2=A0 =C2=A0= 0
.../external_tables/actions/get_all_nodes.py=C2=A0 =C2=A0 =C2=A0 =C2= =A0|=C2=A0 =C2=A04 +
.../databases/external_tables/mapping_utils.py=C2=A0 =C2=A0 =C2=A0| 16= 5 ++++++++
.../databases/external_tables/properties.py=C2=A0 =C2=A0 =C2=A0 =C2=A0= |=C2=A0 78 ++++
.../external_tables/reverse_engineer_ddl.py=C2=A0 =C2=A0 =C2=A0 =C2=A0= |=C2=A0 69 ++++
.../static/img/coll-external_table.svg=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0|=C2=A0 =C2=A01 +
.../external_tables/static/img/external_table.svg=C2=A0 |=C2=A0 =C2=A0= 1 +
.../templates/sql/gpdb_5.0_plus/create.sql=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0|=C2=A0 60 +++
.../templates/sql/gpdb_5.0_plus/get_columns.sql=C2=A0 =C2=A0 |=C2=A0 1= 2 +
.../sql/gpdb_5.0_plus/get_table_information.sql=C2=A0 =C2=A0 |=C2=A0 2= 2 ++
.../templates/sql/gpdb_5.0_plus/list.sql=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0|=C2=A0 =C2=A06 +
.../templates/sql/gpdb_5.0_plus/node.sql=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0|=C2=A0 =C2=A05 +
.../databases/external_tables/tests/__init__.py=C2=A0 =C2=A0 |=C2=A0 = =C2=A00
.../tests/test_external_tables_module.py=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0|=C2=A0 99 +++++
.../tests/test_external_tables_view.py=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0| 428 +++++++++++++++++++++
.../external_tables/tests/test_mapping_utils.py=C2=A0 =C2=A0 | 375 +++= +++++++++++++++
.../external_tables/tests/test_properties.py=C2=A0 =C2=A0 =C2=A0 =C2= =A0| 156 ++++++++
.../tests/test_reverse_engineer_ddl.py=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0| 261 +++++++++++++
.../tests/test_sql_template_create_integration.py=C2=A0 |=C2=A0 =C2=A0= 0
.../templates/table/sql/gpdb_5.0_plus/nodes.sql=C2=A0 =C2=A0 |=C2=A0 = =C2=A01 +
web/pgadmin/static/bundle/browser.js=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0|=C2=A0 =C2=A01 +
.../databases/external_tables/external_tables.js=C2=A0 =C2=A0|=C2=A0 8= 8 +++++
.../servers/databases/external_tables/index.js=C2=A0 =C2=A0 =C2=A0|=C2= =A0 18 +
web/pgadmin/tools/sqleditor/__init__.py=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 |=C2=A0 =C2=A01 +
.../external_tables/external_tables_spec.js=C2=A0 =C2=A0 =C2=A0 =C2=A0= |=C2=A0 56 +++
web/webpack.config.js=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A09 +
web/webpack.shim.js=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A03 + 28 files changed, 2194 insertions(+)


--001a1141fb12e141070566b965df--