Basic support for viewing tables in Greenplum. Patch from George & Tira @ Pivotal.

This commit is contained in:
Atira Odhner
2017-02-13 10:02:20 +00:00
committed by Dave Page
parent 2f6a0e01da
commit ec9e8b79a3
4 changed files with 125 additions and 2 deletions

View File

@@ -0,0 +1,7 @@
SELECT rel.oid, rel.relname AS name,
(SELECT count(*) FROM pg_trigger WHERE tgrelid=rel.oid AND tgisinternal = FALSE) AS triggercount,
(SELECT count(*) FROM pg_trigger WHERE tgrelid=rel.oid AND tgisinternal = FALSE AND tgenabled = 'O') AS has_enable_triggers
FROM pg_class rel
WHERE rel.relkind IN ('r','s','t') AND rel.relnamespace = {{ scid }}::oid
{% if tid %} AND rel.oid = {{tid}}::OID {% endif %}
ORDER BY rel.relname;

View File

@@ -1,6 +1,6 @@
SELECT rel.oid, rel.relname AS name,
(SELECT count(*) FROM pg_trigger WHERE tgrelid=rel.oid AND tgisinternal = FALSE) AS triggercount,
(SELECT count(*) FROM pg_trigger WHERE tgrelid=rel.oid AND tgisinternal = FALSE AND tgenabled = 'O') AS has_enable_triggers
(SELECT count(*) FROM pg_trigger WHERE tgrelid=rel.oid) AS triggercount,
(SELECT count(*) FROM pg_trigger WHERE tgrelid=rel.oid AND tgenabled = 'O') AS has_enable_triggers
FROM pg_class rel
WHERE rel.relkind IN ('r','s','t') AND rel.relnamespace = {{ scid }}::oid
{% if tid %} AND rel.oid = {{tid}}::OID {% endif %}

View File

@@ -0,0 +1,60 @@
import os
from jinja2 import BaseLoader
from jinja2 import Environment
from pgadmin.utils.route import BaseTestGenerator
from regression import test_utils
class TestTablesNode(BaseTestGenerator):
def runTest(self):
"""
This tests that all applicable sql template versions can fetch table names
"""
with test_utils.Database(self.server) as (connection, database_name):
test_utils.create_table(self.server, database_name, "test_table")
if connection.server_version < 91000:
self.versions_to_test = ['default']
else:
self.versions_to_test = ['default', '9.1_plus']
for version in self.versions_to_test:
template_file = os.path.join(os.path.dirname(__file__), "..", version, "nodes.sql")
file_content = open(template_file, 'r').read()
env = Environment(loader=SimpleTemplateLoader(file_content))
template = env.get_template("")
public_schema_id = 2200
sql = template.render(scid=public_schema_id)
cursor = connection.cursor()
cursor.execute(sql)
fetch_result = cursor.fetchall()
first_row = {}
for index, description in enumerate(cursor.description):
first_row[description.name] = fetch_result[0][index]
print first_row
oid = first_row['oid']
name = first_row['name']
triggercount = first_row['triggercount']
has_enable_triggers = first_row['has_enable_triggers']
self.assertIsNotNone(long(oid))
self.assertEqual('test_table', name)
# triggercount is sometimes returned as a string for some reason
self.assertEqual(0L, long(triggercount))
self.assertIsNotNone(long(has_enable_triggers))
class SimpleTemplateLoader(BaseLoader):
def __init__(self, file_content):
self.file_content = file_content
def get_source(self, *args):
return self.file_content, "required-return-not-a-real-file.txt", True