Add EXPLAIN options for SETTINGS and SUMMARY. Fixes #4335

Prevent flickering of large tooltips on the Graphical EXPLAIN canvas. Fixes #4224
EXPLAIN options should be Query Tool instance-specific. Fixes #4395
This commit is contained in:
Aditya Toshniwal
2019-07-03 13:57:56 +01:00
committed by Dave Page
parent 15556f9f89
commit 0340b8fb28
25 changed files with 425 additions and 249 deletions

View File

@@ -10,10 +10,11 @@
import os
from flask import Flask, render_template
from jinja2 import FileSystemLoader
from jinja2 import FileSystemLoader, ChoiceLoader
from pgadmin import VersionedTemplateLoader
from pgadmin.utils.route import BaseTestGenerator
from pgadmin import tools
class TestExplainPlanTemplates(BaseTestGenerator):
@@ -34,9 +35,9 @@ class TestExplainPlanTemplates(BaseTestGenerator):
),
sql_statement='SELECT * FROM places',
expected_return_value='EXPLAIN '
'(FORMAT XML,ANALYZE True,'
'VERBOSE True,COSTS False,'
'BUFFERS True) SELECT * FROM places'
'(FORMAT XML, ANALYZE true, '
'VERBOSE true, COSTS false, '
'BUFFERS true) SELECT * FROM places'
)
),
(
@@ -52,7 +53,7 @@ class TestExplainPlanTemplates(BaseTestGenerator):
),
sql_statement='SELECT * FROM places',
expected_return_value='EXPLAIN '
'(FORMAT JSON,BUFFERS True) '
'(FORMAT JSON, BUFFERS true) '
'SELECT * FROM places'
)
),
@@ -70,8 +71,8 @@ class TestExplainPlanTemplates(BaseTestGenerator):
),
sql_statement='SELECT * FROM places',
expected_return_value='EXPLAIN '
'(FORMAT JSON,TIMING False,'
'BUFFERS True) SELECT * FROM places'
'(FORMAT JSON, TIMING false, '
'BUFFERS true) SELECT * FROM places'
)
),
(
@@ -89,8 +90,30 @@ class TestExplainPlanTemplates(BaseTestGenerator):
),
sql_statement='SELECT * FROM places',
expected_return_value='EXPLAIN '
'(FORMAT YAML,TIMING False,'
'SUMMARY True,BUFFERS True) '
'(FORMAT YAML, TIMING false, '
'BUFFERS true, SUMMARY true) '
'SELECT * FROM places'
)
),
(
'When rendering Postgres 12 template, '
'when settings is present,'
'it returns the explain plan with settings',
dict(
template_path='sqleditor/sql/12_plus/explain_plan.sql',
input_parameters=dict(
sql='SELECT * FROM places',
format='json',
buffers=False,
timing=False,
summary=False,
settings=True
),
sql_statement='SELECT * FROM places',
expected_return_value='EXPLAIN '
'(FORMAT JSON, TIMING false, '
'BUFFERS false, SUMMARY false, '
'SETTINGS true) '
'SELECT * FROM places'
)
),
@@ -153,6 +176,11 @@ class TestExplainPlanTemplates(BaseTestGenerator):
class FakeApp(Flask):
def __init__(self):
super(FakeApp, self).__init__("")
self.jinja_loader = FileSystemLoader(
os.path.dirname(os.path.realpath(__file__)) + "/../templates"
)
self.jinja_loader = ChoiceLoader([
FileSystemLoader(
os.path.dirname(os.path.realpath(__file__)) + "/../templates"
),
FileSystemLoader(
os.path.join(os.path.dirname(tools.__file__), 'templates')
)
])