Subject: [patch] Dependents and Dependencies in GreenPlum

From: Joao Pedro De Almeida Pereira <[email-masked]>
Date: Fri, 21 Apr 2017 15:42:33 -0400

Hi Hackers,

We found out that when you are connected to a GreenPlum database and try to
get Dependents and Dependencies of an object the application was returning
a SQL error.

This patch splits the SQL query used to retrieve the Dependents,
Dependencies, and Roles SQL file into multiple versioned files.
Add Unit Tests for each file.
Also added __init__.py files to other test directories to run the tests in
them.
Add ORDER BY into Copy Selection Feature test to ensure the results are
retrieved always in the same order
Renamed the Scenario of the xss_checks_pgadmin_debugger_test and skip it
for versions less than 9.1

Thanks

Joao & Sarah

-- 
Sent via pgadmin-hackers mailing list ([email-masked])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers

---

From: Dave Page <[email-masked]>
Date: Mon, 24 Apr 2017 12:13:16 +0100

Ashesh, can you review/commit this please?

On Fri, Apr 21, 2017 at 8:42 PM, Joao Pedro De Almeida Pereira <
[email-masked]> wrote:

> Hi Hackers,
>
> We found out that when you are connected to a GreenPlum database and try
> to get Dependents and Dependencies of an object the application was
> returning a SQL error.
>

-- 
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

---

From: Ashesh Vashi <[email-masked]>
Date: Wed, 26 Apr 2017 10:56:39 +0530

On Mon, Apr 24, 2017 at 4:43 PM, Dave Page <[email-masked]> wrote:

>> Also added __init__.py files to other test directories to run the tests
>> in them.
>>
> Hi Joao & Sarah,

Why do we need to add __init__.py in the template directory?
I didn't understand the purpose of the adding __init__.py files in the
template directories.

NOTE: The headers in those files are not consistent with the other project
files.

--

Thanks & Regards,

Ashesh Vashi
EnterpriseDB INDIA: Enterprise PostgreSQL Company
<http://www.enterprisedb.com/>

*http://www.linkedin.com/in/asheshvashi*
<http://www.linkedin.com/in/asheshvashi>

---

From: Joao Pedro De Almeida Pereira <[email-masked]>
Date: Wed, 26 Apr 2017 11:22:33 -0400

Hello Ashesh,

Thanks for reviewing the patch.

We added the __init__.py files into templates to convert them into packages
so that the tests inside of them can be found by the test runner.

Thanks!
Joao & Sarah

On Wed, Apr 26, 2017 at 1:26 AM, Ashesh Vashi <[email-masked]
> wrote:

>>> Renamed the Scenario of the xss_checks_pgadmin_debugger_test and skip
>>> it for versions less than 9.1
>>>
>>> Thanks
>>>
>>> Joao & Sarah
>>>
>>>
>>> --

---

From: Joao Pedro De Almeida Pereira <[email-masked]>
Date: Thu, 27 Apr 2017 10:37:03 -0400

Thanks for reviewing, Ashesh.

We have updated the patch. The headers are all consistent and we removed
the __init__.py files in directories containing only .sql.

Thanks!
Joao & Matt

On Wed, Apr 26, 2017 at 11:22 AM, Joao Pedro De Almeida Pereira <
[email-masked]> wrote:

> We added the __init__.py files into templates to convert them into
> packages so that the tests inside of them can be found by the test runner.
>
> Thanks!
> Joao & Sarah
>
> On Wed, Apr 26, 2017 at 1:26 AM, Ashesh Vashi <
> [email-masked]> wrote:
>
>>>> We found out that when you are connected to a GreenPlum database and
>>>> try to get Dependents and Dependencies of an object the application was
>>>> returning a SQL error.
>>>>
>> NOTE: The headers in those files are not consistent with the other
>> project files.
>>
>> --
>>
>> Thanks & Regards,
>>
>> Ashesh Vashi

---

From: Sarah McAlear <[email-masked]>
Date: Tue, 2 May 2017 17:17:03 -0400

Hi Hackers & Ashesh!

Is there anything else we can do for this?

Thanks!
Matt & Sarah

On Thu, Apr 27, 2017 at 10:37 AM, Joao Pedro De Almeida Pereira <
[email-masked]> wrote:

>>>>> Also added __init__.py files to other test directories to run the
>>>>> tests in them.
>>>>>
>>>> Hi Joao & Sarah,
>>>

---

From: Robert Eckhardt <[email-masked]>
Date: Thu, 4 May 2017 07:51:11 -0400

All,

This change in the xss testing is preventing our CI from going green and is
also preventing the Dependents and Dependencies tabs in Greenplum from
being useful.

Can we either merge this or provide feedback as to what needs to change so
that it can be merged.

Thank you
Rob

On Tue, May 2, 2017 at 5:17 PM, Sarah McAlear <[email-masked]> wrote:

>>>>> Add ORDER BY into Copy Selection Feature test to ensure the results
>>>>>> are retrieved always in the same order
>>>>>> Renamed the Scenario of the xss_checks_pgadmin_debugger_test and
>>>>>> skip it for versions less than 9.1
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>> Joao & Sarah
>>>>>>
>>>>>>
>>>>>> --

---

From: Dave Page <[email-masked]>
Date: Fri, 5 May 2017 13:18:02 +0100

Can you get this polished off on Monday please Ashesh?

On Thu, May 4, 2017 at 12:51 PM, Robert Eckhardt <[email-masked]>
wrote:

> All,
>
> This change in the xss testing is preventing our CI from going green and
> is also preventing the Dependents and Dependencies tabs in Greenplum from
> being useful.
>

---

From: Dave Page <[email-masked]>
Date: Mon, 8 May 2017 09:16:23 +0100

Akshay, as Ashesh is unavailable today, can you please review/commit this
ASAP?

Thanks.

On Fri, May 5, 2017 at 1:18 PM, Dave Page <[email-masked]> wrote:

>> Can we either merge this or provide feedback as to what needs to change
>> so that it can be merged.
>>
>> Thank you
>> Rob
>>
>>>> We have updated the patch. The headers are all consistent and we
>>>> removed the __init__.py files in directories containing only .sql.
>>>>
>>>> Thanks!
>>>> Joao & Matt
>>>>
>>>>>>>> We found out that when you are connected to a GreenPlum database
>>>>>>>> and try to get Dependents and Dependencies of an object the application was
>>>>>>>> returning a SQL error.
>>>>>>>>
>>>>>> I didn't understand the purpose of the adding __init__.py files in
>>>>>> the template directories.
>>>>>>

---

From: Akshay Joshi <[email-masked]>
Date: Mon, 8 May 2017 14:20:53 +0530

> Akshay, as Ashesh is unavailable today, can you please review/commit this

    Sure.

-- 
*Akshay Joshi*
*Principal Software Engineer *

*Phone: +91 20-3058-9517Mobile: +91 976-788-8246*

---

From: Akshay Joshi <[email-masked]>
Date: Mon, 8 May 2017 16:54:16 +0530

Hi All

I have reviewed the code and have following questions:

   - Why do we have empty __init__.py file in sql and templates/<module>
   folder. In this patch we have couple of occurrences one of them is web/
   pgadmin/browser/server_groups/servers/databases/schemas/table/templates/trigger
   and  web/pgadmin/browser/server_groups/servers/databases/schemas
   /table/templates/trigger/sql
   - Why do we have tests folder inside sql folder as we already have tests
   folder in respective module. For example we have tests folder in
   *web/pgadmin/browser/server_groups/servers/databases/schemas/table/column
*then
   why do we need it in
   *web/pgadmin/browser/server_groups/servers/databases/schemas/table/templates/column/sql/tests*

Apart from above code looks good to me.

On Mon, May 8, 2017 at 2:20 PM, Akshay Joshi <[email-masked]>
wrote:

>>>> This change in the xss testing is preventing our CI from going green
>>>> and is also preventing the Dependents and Dependencies tabs in Greenplum
>>>> from being useful.
>>>>
>>>>>>>>> Add ORDER BY into Copy Selection Feature test to ensure the
>>>>>>>>>> results are retrieved always in the same order

---

From: Dave Page <[email-masked]>
Date: Mon, 8 May 2017 12:28:16 +0100

Hi

On Mon, May 8, 2017 at 12:24 PM, Akshay Joshi <[email-masked]

>    and  web/pgadmin/browser/server_groups/servers/databases/schemas/table/
>    templates/trigger/sql
>
> That was already answered up-thread: We added the __init__.py files into
templates to convert them into packages so that the tests inside of them
can be found by the test runner.

>
>    - Why do we have tests folder inside sql folder as we already have
>    tests folder in respective module. For example we have tests folder in
>    *web/pgadmin/browser/server_groups/servers/databases/schemas/table/column *then
>    why do we need it in
> That does seem like a valid concern to me.

> On Mon, May 8, 2017 at 2:20 PM, Akshay Joshi <
> [email-masked]> wrote:
>
>>
>>
>>> Akshay, as Ashesh is unavailable today, can you please review/commit
>>> this ASAP?
>>>
>>
>>     Sure.
>>
>>>
>>> Thanks.
>>>
>>>>> Can we either merge this or provide feedback as to what needs to
>>>>> change so that it can be merged.
>>>>>
>>>>> Thank you
>>>>> Rob
>>>>>
>>>>>>>>>>> Also added __init__.py files to other test directories to run
>>>>>>>>>>> the tests in them.
>>>>>>>>>>>
>>>>>>>>>> Hi Joao & Sarah,
>>>>>>>>>
>>>>>>>>>>> Renamed the Scenario of the xss_checks_pgadmin_debugger_test
>>>>>>>>>>> and skip it for versions less than 9.1
>>>>>>>>>>>
>>>>>>>>>>> Thanks
>>>>>>>>>>>
>>>>>>>>>>> Joao & Sarah
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>> *Phone: +91 20-3058-9517 <+91%2020%203058%209517>Mobile: +91 976-788-8246
>> <+91%2097678%2088246>*
>>
>
>
>
> --
> *Akshay Joshi*
> *Phone: +91 20-3058-9517 <+91%2020%203058%209517>Mobile: +91 976-788-8246
> <+91%2097678%2088246>*
>

---

From: Sarah McAlear <[email-masked]>
Date: Mon, 8 May 2017 12:14:30 -0400

Hi!

This patch has the tests moved to the test directories of the parent.

Thanks,
Joao & Sarah

On Mon, May 8, 2017 at 7:28 AM, Dave Page <[email-masked]> wrote:

> Hi
>
> On Mon, May 8, 2017 at 12:24 PM, Akshay Joshi <
>>>>> On Thu, May 4, 2017 at 12:51 PM, Robert Eckhardt <[email-masked]
>>>>> > wrote:
>>>>>
>>>>>> All,
>>>>>>
>>>>>>>>>>>> We found out that when you are connected to a GreenPlum
>>>>>>>>>>>> database and try to get Dependents and Dependencies of an object the
>>>>>>>>>>>> application was returning a SQL error.
>>>>>>>>>>>>
>>>>>>>>>>>> This patch splits the SQL query used to retrieve the
>>>>>>>>>>>> Dependents, Dependencies, and Roles SQL file into multiple versioned files.
>>>>>>>>>> I didn't understand the purpose of the adding __init__.py files
>>>>>>>>>> in the template directories.
>>>>>>>>>>
>>>>>>>>>> NOTE: The headers in those files are not consistent with the
>>>>>>>>>> other project files.
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>>
>>>>>>>>>> Thanks & Regards,
>>>>>>>>>>
>>>>>>>>>> Ashesh Vashi
>>> *Phone: +91 20-3058-9517 <+91%2020%203058%209517>Mobile: +91
>>> 976-788-8246 <+91%2097678%2088246>*
>>>
>>
>>
>>
>> --
>> *Akshay Joshi*

---

From: Akshay Joshi <[email-masked]>
Date: Tue, 9 May 2017 15:31:29 +0530

Hi Sarah

Below are my review comments on the latest patch:

   - Some test file names ended with "*_sql_template.py*" do we need to add
   that string ?
   - Files "test_column_acl_sql_template.py" and "test_column_properties_sql
   _template.py" should be moved from tables->tests to
   tables->column->tests. As it's related to column.
   - Files "test_trigger_get_oid_sql_template.py" and "test_trigger_nodes_
   sql_template.py" should be moved from tables->tests to
   tables->triggers->tests. As its related to triggers.
   - Following test cases are failing for PG 9.6 and PG 10.0 with error "*name
   'long' is not defined". *I am using python 3.5
      - TestRoleDependenciesSqlTemplate
      - TestTablesPropertiesSqlTemplate
      - TestTablesNodeSqlTemplate

On Mon, May 8, 2017 at 9:44 PM, Sarah McAlear <[email-masked]> wrote:

>>>    - Why do we have empty __init__.py file in sql and
>>>    templates/<module> folder. In this patch we have couple of occurrences one
>>>    of them is web/pgadmin/browser/server_groups/servers/databases/
>>>    schemas/table/templates/trigger and  web/pgadmin/browser/serve
>>>    r_groups/servers/databases/schemas/table/templates/trigger/sql
>>>
>>> That was already answered up-thread: We added the __init__.py files
>> into templates to convert them into packages so that the tests inside of
>> them can be found by the test runner.
>>
>>>
>>>>>> On Thu, May 4, 2017 at 12:51 PM, Robert Eckhardt <
>>>>>> [email-masked]> wrote:
>>>>>>
>>>>>>> All,
>>>>>>>
>>>>>>>>>> We added the __init__.py files into templates to convert them
>>>>>>>>>> into packages so that the tests inside of them can be found by the test
>>>>>>>>>> runner.
>>>>>>>>>>
>>>>>>>>>> Thanks!
>>>>>>>>>> Joao & Sarah
>>>>>>>>>>
>>>>>>>>>>>> On Fri, Apr 21, 2017 at 8:42 PM, Joao Pedro De Almeida Pereira
>>>>>>>>>>>> <[email-masked]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi Hackers,
>>>>>>>>>>>>>

---

From: Sarah McAlear <[email-masked]>
Date: Tue, 9 May 2017 11:33:22 -0400

Hi Akshay!

> Some test file names ended with "*_sql_template.py*" do we need to add
> that string ?

we added this suffix after moving the tests up a level to tables/tests to
clarify what subject they applied to. we changed the suffix to "_sql.py"

- Files "test_column_acl_sql_template.py" and "test_column_properties_sql_
> template.py" should be moved from tables->tests to tables->column->tests.
> As it's related to column.
> - Files "test_trigger_get_oid_sql_template.py" and "test_trigger_nodes_sql

these tests are related to the sql files in tables/templates/column, not
tables/column, so moving them into tables/column would be more confusing.

Following test cases are failing

Thank you, fixed, see new patch. Can you confirm that TestTablesNodeSql
doesn't fail in your environment?

Thanks,
George & Sarah

---

From: Akshay Joshi <[email-masked]>
Date: Wed, 10 May 2017 11:59:15 +0530

Hi Sarah

> doesn't fail in your environment?

    TestTablesNodeSql hasn't failed but TestRoleDependenciesSql failed with
below error:
    .....\test_role_dependencies_sql.py\", line 41, in assertions\n
self.assertEqual(1, len(fetch_result))\nAssertionError: 1 != 0

---

From: Sarah McAlear <[email-masked]>
Date: Wed, 10 May 2017 09:37:21 -0400

Hi Akshay!

Does this error occur on 9.6 or 10.0? We tested it in 9.6 and all our tests
pass.

Thanks!
João & Sarah

On Wed, May 10, 2017 at 2:29 AM, Akshay Joshi <[email-masked]

>     TestTablesNodeSql hasn't failed but TestRoleDependenciesSql failed
> with below error:

---

From: Akshay Joshi <[email-masked]>
Date: Wed, 10 May 2017 23:26:28 +0530

On May 10, 2017 19:07, "Sarah McAlear" <[email-masked]> wrote:

Hi Akshay!

    On both 9.6 and 10.0. Query returned 0 rows which is compared against 1
in assert statement.

Thanks!
João & Sarah

---

From: Sarah McAlear <[email-masked]>
Date: Wed, 10 May 2017 17:00:30 -0400

Hi Ashkay!

> below error:
>     .....\test_role_dependencies_sql.py\", line 41, in assertions\n self.assertEqual(1,
> len(fetch_result))\nAssertionError: 1 != 0

We experienced a similar problem when we started developing this patch. We
noticed that we were connecting to the database with the super user (the db
owner user), which did not create the role we are expecting when a table is
created. To ensure that this role is created, we had to create a new user
and use it to execute all the tests. After we made this change, the tests
passed.

Can you try to create a new user and use it to execute your tests?

Thanks,
João & Sarah

On Wed, May 10, 2017 at 1:56 PM, Akshay Joshi <[email-masked]

> Does this error occur on 9.6 or 10.0? We tested it in 9.6 and all our
> tests pass.
>
>
>     On both 9.6 and 10.0. Query returned 0 rows which is compared against
> 1 in assert statement.
>
>
> Thanks!
> João & Sarah
>
> On Wed, May 10, 2017 at 2:29 AM, Akshay Joshi <
>>> we added this suffix after moving the tests up a level to tables/tests
>>> to clarify what subject they applied to. we changed the suffix to "_sql.py"
>>>
>>> - Files "test_column_acl_sql_template.py" and "test_column_properties_

---

From: Akshay Joshi <[email-masked]>
Date: Thu, 11 May 2017 11:41:11 +0530

Hi Sarah

> Can you try to create a new user and use it to execute your tests?

    I did that and it works. I have created new user 'test' with superuser
privileges and update parameter db_username="test" in test_config.json
file. But still I am unable to understand why it doesn't work with
'postgres' (default) user?

>
> Thanks,
> João & Sarah
>
> On Wed, May 10, 2017 at 1:56 PM, Akshay Joshi <
>>>>> Some test file names ended with "*_sql_template.py*" do we need to
>>>>> add that string ?
>>>>
>>>>> - Files "test_trigger_get_oid_sql_template.py" and "
>>>>> test_trigger_nodes_sql_template.py" should be moved from
>>>>> tables->tests to tables->triggers->tests. As its related to triggers.
>>>>
>>>> these tests are related to the sql files in tables/templates/column,
>>>> not tables/column, so moving them into tables/column would be more
>>>> confusing.
>>>>

---

From: Dave Page <[email-masked]>
Date: Thu, 11 May 2017 07:33:47 +0100

> On 11 May 2017, at 07:11, Akshay Joshi <[email-masked]> wrote:
> 
> Hi Sarah
> 
>>> TestTablesNodeSql hasn't failed but TestRoleDependenciesSql failed with below error:
>>>     .....\test_role_dependencies_sql.py\", line 41, in assertions\n self.assertEqual(1, len(fetch_result))\nAssertionError: 1 != 0
>> 
>> 
>> We experienced a similar problem when we started developing this patch. We noticed that we were connecting to the database with the super user (the db owner user), which did not create the role we are expecting when a table is created. To ensure that this role is created, we had to create a new user and use it to execute all the tests. After we made this change, the tests passed. 
>> 
>     I did that and it works. I have created new user 'test' with superuser privileges and update parameter db_username="test" in test_config.json file. But still I am unable to understand why it doesn't work with 'postgres' (default) user?  

Agreed. That suggests something fishy is going on that should be understood.

>> 
>> Thanks,
>> João & Sarah
>> 
>>> On Wed, May 10, 2017 at 1:56 PM, Akshay Joshi <[email-masked]> wrote:
>>> 
>>> 
>>> Does this error occur on 9.6 or 10.0? We tested it in 9.6 and all our tests pass.
>>> 
>>>     On both 9.6 and 10.0. Query returned 0 rows which is compared against 1 in assert statement. 
>>> 
>>> Thanks!
>>> João & Sarah
>>> 
>>>> On Wed, May 10, 2017 at 2:29 AM, Akshay Joshi <[email-masked]> wrote:
>>>> Hi Sarah
>>>> 
>>>>>> Some test file names ended with "_sql_template.py" do we need to add that string ? 
>>>>> 
>>>>> we added this suffix after moving the tests up a level to tables/tests to clarify what subject they applied to. we changed the suffix to "_sql.py"
>>>>> 
>>>>>> - Files "test_column_acl_sql_template.py" and "test_column_properties_sql_template.py" should be moved from tables->tests to tables->column->tests. As it's related to column.
>>>>>> - Files "test_trigger_get_oid_sql_template.py" and "test_trigger_nodes_sql_template.py" should be moved from tables->tests to tables->triggers->tests. As its related to triggers.
>>>>> these tests are related to the sql files in tables/templates/column, not tables/column, so moving them into tables/column would be more confusing. 
>>>>> 
>>>>> Thank you, fixed, see new patch. Can you confirm that TestTablesNodeSql doesn't fail in your environment?
>>>>    
>>>>     TestTablesNodeSql hasn't failed but TestRoleDependenciesSql failed with below error:
>>>>     .....\test_role_dependencies_sql.py\", line 41, in assertions\n self.assertEqual(1, len(fetch_result))\nAssertionError: 1 != 0
>>>> 
>>>>> 
>>>>> Thanks,
>>>>> George & Sarah
>>>>> 
>>>> 
>>>> 
>>>> 
>>>> -- 
>>>> Akshay Joshi
>>>> Principal Software Engineer 
>>>> 
>>>> 
>>>> 
>>>> Phone: +91 20-3058-9517
>>>> Mobile: +91 976-788-8246
>>> 
>>> 
>> 
> 
> 
> 
> -- 
> Akshay Joshi
> Principal Software Engineer 
> 
> 
> 
> Phone: +91 20-3058-9517
> Mobile: +91 976-788-8246

---

From: Khushboo Vashi <[email-masked]>
Date: Thu, 11 May 2017 12:50:42 +0530

On Thu, May 11, 2017 at 12:03 PM, Dave Page <[email-masked]> wrote:

>> We experienced a similar problem when we started developing this patch.
>> We noticed that we were connecting to the database with the super user (the
>> db owner user), which did not create the role we are expecting when a table
>> is created. To ensure that this role is created, we had to create a new
>> user and use it to execute all the tests. After we made this change, the
>> tests passed.
>>
We don't check role dependencies for every object. As per the code, the
role dependencies are executed for columns not for the table itself.
And in the test cases, the table object is trying to execute the role
dependencies, so I think this test case is not correct.

>>>>> Thank you, fixed, see new patch. Can you confirm that
>>>>> TestTablesNodeSql doesn't fail in your environment?
>>>>>
>>>>

---

From: Joao Pedro De Almeida Pereira <[email-masked]>
Date: Thu, 11 May 2017 11:33:06 +0000

Hello all,
This test is trying to check if the sql to retrieve the role dependencies
of a object in the database is correct. Using a different user to connect
to the database and create tables there is no need for extra setup because
the role depedencies table entry is added automatically. Also we talked
with some internal users and they told us they always used a different user
to connect to the database with pgadmin.

After your comments we realize that the test need to have a different setup
in order to become more readable and resilient. What do we need to do in
the test setup to ensure an entry is added to the role dependency table?

Also the test need to be a little bit more resilient to work independently
of the user that is used on the test.

Thanks
Joao

On Thu, May 11, 2017, 3:20 AM Khushboo Vashi <
[email-masked]> wrote:

>>     I did that and it works. I have created new user 'test' with
>> superuser privileges and update parameter db_username="test" in
>> test_config.json file. But still I am unable to understand why it doesn't
>> work with 'postgres' (default) user?
>>
>>
>>>>>> we added this suffix after moving the tests up a level to
>>>>>> tables/tests to clarify what subject they applied to. we changed the suffix
>>>>>> to "_sql.py"
>>>>>>
>>>>>> - Files "test_column_acl_sql_template.py" and "
>>>>>>> test_column_properties_sql_template.py" should be moved from
>>>>>>> tables->tests to tables->column->tests. As it's related to column.

---

From: Joao Pedro De Almeida Pereira <[email-masked]>
Date: Fri, 12 May 2017 13:53:03 -0400

Hello Akshay,

You can find attached a new version of the patch that changes the test in
question.
This new version instead of requiring a creation of a new Role now does the
following:
1 - Creates a new Role
2 - Creates a table with that Role
3 - Checks for dependencies

Thanks
Joao & George

On Thu, May 11, 2017 at 7:33 AM, Joao Pedro De Almeida Pereira <
[email-masked]> wrote:

> After your comments we realize that the test need to have a different
> setup in order to become more readable and resilient. What do we need to do
> in the test setup to ensure an entry is added to the role dependency table?
>
> On Thu, May 11, 2017, 3:20 AM Khushboo Vashi <khushboo.vashi@enterprisedb.
> com> wrote:
>

---

From: Akshay Joshi <[email-masked]>
Date: Sun, 14 May 2017 14:22:41 +0530

Hi Joao

On Fri, May 12, 2017 at 11:23 PM, Joao Pedro De Almeida Pereira <
[email-masked]> wrote:

> This new version instead of requiring a creation of a new Role now does
> the following:
> 1 - Creates a new Role

   Test case still failing on my machine because when we create new Role it
is without password and when we try to create table with that role first we
will try to connect the database using that new role with
servers['db_password'] which is wrong. I have modified setup function of "
*test_role_dependencies_sql.py*" and it works, we can create new role using
database server's password

Old setup function:
      *def *setUp(self):

    create_role(self.server, *"testpgadmin"*)
    self.server_with_modified_user = self.server.copy()
    self.server_with_modified_user[*'username'*] = *"testpgadmin"*

Modified setup function:

   def setUp(self):

    with test_utils.Database(self.server) as (connection, database_name):
        cursor = connection.cursor()
        try:
            cursor.execute(
                "CREATE ROLE testpgadmin LOGIN PASSWORD '%s'"
                % self.server['db_password'])
        except Exception as exception:
            print(exception)
        connection.commit()

    self.server_with_modified_user = self.server.copy()
    self.server_with_modified_user['username'] = "testpgadmin"

   If the above logic looks good to you then I'll commit the code.

>> Also the test need to be a little bit more resilient to work
>> independently of the user that is used on the test.
>>
>> Thanks
>> Joao
>>
>>>>> We experienced a similar problem when we started developing this
>>>>> patch. We noticed that we were connecting to the database with the super
>>>>> user (the db owner user), which did not create the role we are expecting
>>>>> when a table is created. To ensure that this role is created, we had to
>>>>> create a new user and use it to execute all the tests. After we made this
>>>>> change, the tests passed.
>>>>>
>>>>>>>>> Some test file names ended with "*_sql_template.py*" do we need
>>>>>>>>> to add that string ?
>>>>>>>>
>>>>>>>> these tests are related to the sql files in
>>>>>>>> tables/templates/column, not tables/column, so moving them into
>>>>>>>> tables/column would be more confusing.
>>>>>>>>

---

From: Matthew Kleiman <[email-masked]>
Date: Sun, 14 May 2017 20:49:04 -0400

Hi Akshay

I really appreciate you taking a look at this on a Sunday!
I am not able to get access to my work computer to run your changes
directly. From what you are saying, though, it sounds like a reasonable
change. If this change is passing in your environment, I say go ahead and
make the change to the patch and commit.

Thanks again for helping us get this into the release.

Best,
Matt

On Sun, May 14, 2017 at 4:52 AM, Akshay Joshi <[email-masked]

>    Test case still failing on my machine because when we create new Role
> it is without password and when we try to create table with that role first
> we will try to connect the database using that new role with
> *test_role_dependencies_sql.py*" and it works, we can create new role
> using database server's password
>
> Old setup function:
>       *def *setUp(self):
>
>>> This test is trying to check if the sql to retrieve the role
>>> dependencies of a object in the database is correct. Using a different user
>>> to connect to the database and create tables there is no need for extra
>>> setup because the role depedencies table entry is added automatically. Also
>>> we talked with some internal users and they told us they always used a
>>> different user to connect to the database with pgadmin.
>>>

---

From: Akshay Joshi <[email-masked]>
Date: Mon, 15 May 2017 10:44:58 +0530

Thanks patch applied.

On Mon, May 15, 2017 at 6:19 AM, Matthew Kleiman <[email-masked]>
wrote:

> On Sun, May 14, 2017 at 4:52 AM, Akshay Joshi <
>>> You can find attached a new version of the patch that changes the test
>>> in question.
>>>>> We don't check role dependencies for every object. As per the code,
>>>>> the role dependencies are executed for columns not for the table itself.
>>>>>>>>> On Tue, May 9, 2017 at 9:03 PM, Sarah McAlear <[email-masked]
>>>>>>>>> > wrote:
>>>>>>>>>
>>>>>>>>>> Hi Akshay!
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>     .....\test_role_dependencies_sql.py\", line 41, in assertions
>>>>>>>>> \n self.assertEqual(1, len(fetch_result))\nAssertionError: 1 != 0
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>> George & Sarah
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> *Akshay Joshi*