[pgAdmin4][patch] Remove extra brackets in CREATE Script and DDL Comparison
Hi, all
Extra brackets appear in CREATE Script and DDL Comparison,
please refer to the attachment error1.png and error2.png for details.
■ scenario
The step is as follow:
1) Connect to pg9.6 or pg9.5
2) The SQL to create the trigger is as follows.
-
CREATE TRIGGER tg1
BEFORE INSERT
ON public.tb1
FOR EACH ROW
WHEN (new.c1 > 0)
EXECUTE PROCEDURE public.tf1();
-
3) Right click tg1
4) Click CREATE Script
The SQL shown in 'Query Editor' is as follows.
-
CREATE TRIGGER tg1
BEFORE INSERT
ON public.tb1
FOR EACH ROW
WHEN ((new.c1 > 0)) brackets appears twice.
EXECUTE PROCEDURE public.tf1();
■ The detail of cause:
file:
web\pgadmin\browser\server_groups\servers\databases\schemas\tables\templates\triggers\sql\pg\default\create.sql
WHEN ({{ data.whenclause }}){% endif %}
There are already brackets in data.whenclause.
■ The summary of correction
file:
web\pgadmin\browser\server_groups\servers\databases\schemas\tables\templates\triggers\sql\pg\default\create.sql
- WHEN ({{ data.whenclause }}){% endif %}
+ WHEN {% if not data.oid %}({% endif %}{{ data.whenclause }}{% if not data.oid
%}){% endif %}{% endif %}
Refer to the following code for the correction method.
file:
web\pgadmin\browser\server_groups\servers\databases\schemas\tables\templates\triggers\sql\pg\10_plus\create.sql
WHEN {% if not data.oid %}({% endif %}{{ data.whenclause }}{% if not data.oid
%}){% endif %}{% endif %}
Here is a patch for create.sql
Please review.
Best Regards!
Zhangjie
create_sql.patch
Description: create_sql.patch
[pgAdmin4][patch] In SharedServersGetTestCase, the prompt information is wrong
Hi, all
SharedServersGetTestCase can only be tested in SERVER mode.
So, in Desktop mode, prompt information will be output.
However, the prompt is wrong.
("Can not run shared servers test cases in the SERVER mode.")
I think it should be changed to the following prompt information
"Can not run shared servers test cases in the Desktop mode."
file: web\pgadmin\browser\server_groups\servers\tests\test_shared_server.py
SharedServersGetTestCase
def setUp(self):
"""This function add the server to test the GET API"""
if config.SERVER_MODE is False:
self.skipTest(
"Can not run shared servers test cases in the SERVER mode." ※
)
Here is a patch for test_shared_server.py
Please review.
Best Regards!
Zhangjie
fix_test_shared_server.patch
Description: fix_test_shared_server.patch
[pgAdmin4] Questions about trigger properties's Fires in edit mode
Hi, all
In trigger's Properties screen, the 'fires' is disabled.
What is the reason why 'fires' is disabled?
I think it should be the same as 'evnt_insert',
When server_type is ppas and in edit mode, 'fires' is disabled.
file:
web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/static/js/trigger.js
id: 'fires', label: gettext('Fires'), deps: ['is_constraint_trigger'],
mode: ['create','edit', 'properties'], group: gettext('Events'),
disabled: function(m) {
if (!m.isNew()) ★ In edit mode, 'fires' is disabled.
return true;
// If contraint trigger is set to True then only enable it
var is_constraint_trigger = m.get('is_constraint_trigger');
if(!m.inSchemaWithModelCheck.apply(this, [m])) {
if(!_.isUndefined(is_constraint_trigger) &&
is_constraint_trigger === true) {
setTimeout(function() { m.set('fires', 'AFTER'); }, 10);
return true;
} else {
return false;
}
} else {
// Check if it is row trigger then enabled it.
var fires_ = m.get('fires');
if (!_.isUndefined(fires_) &&
m.node_info['server']['server_type'] == 'ppas') {
return false;
}
// Disable it
return true;
}
[pgAdmin4][patch] error message is incorrect in domains
Hi, all
In domains's create function, res is used for all error messages.
I don't think this is correct.
On line 13, doid should be used as the error message.Because the execution
result of line 11 is doid.
On line 21, scid should be used as the error message.Because the execution
result of line 19 is scid.
There are similar problems in other functions.
Here is a patch for domains.
Please review.
file:
pgadmin4\web\pgadmin\browser\server_groups\servers\databases\schemas\domains\__init__.py
def create(self, gid, sid, did, scid):
..
1 status, res = self.conn.execute_scalar(SQL)
2 if not status:
3 return internal_server_error(errormsg=res) ※1 res is OK
4
5 # We need oid to add object in tree at browser, below sql will
6 # gives the same
7 SQL = render_template("/".join([self.template_path,
8 self._OID_SQL]),
9 basensp=data['basensp'],
10 name=data['name'])
11 status, doid = self.conn.execute_scalar(SQL)
12 if not status:
13 return internal_server_error(errormsg=res) ※2 res => doid
14
15 # Get updated schema oid
16 SQL = render_template("/".join([self.template_path,
17 self._OID_SQL]),
18 doid=doid)
19 status, scid = self.conn.execute_scalar(SQL)
20 if not status:
21 return internal_server_error(errormsg=res) ※3 res => scid
--
domains.patch
Description: domains.patch
[pgAdmin4][patch] fix a typo in import_export_servers.rst
Hi, all It seems like there's a following typo in import_export_servers.rst -line option. There can be multiple configuations of pgAdmin on the same system. +line option. There can be multiple configurations of pgAdmin on the same system. Attaching a tiny patch to fix it. Please review. Regards, zhang jie -- Development Department III Software Division II Nanjing Fujitsu Nanda Software Tech. Co., Ltd.(FNST) No.6 Wenzhu Road, Software Avenue, Nanjing, 210012, China TEL : +86+25-86630566-9353 COINS: 7998-9353 FAX : +86+25-83317685 MAIL: [email protected] FNST Oline:http://online.fnst.cn.fujitsu.com/fnst-news - import_export_servers.patch Description: import_export_servers.patch
[PATCH] Change slash to backslash in make.bat
Hi, all
In windows, backslash should be used in the path.
In Linux, slash should be used in path.
But in pgadmin4\make.bat, slash is used in the path.
FOR /f "tokens=1 DELims=." %%G IN ('%PGADMIN_PYTHON_DIR%/python.exe -c
"print('%APP_NAME%'.lower().replace(' ', ''))"') DO SET APP_SHORTNAME=%%G
FOR /f "tokens=1 DELims=." %%G IN ('%PGADMIN_PYTHON_DIR%/python.exe -c "import
sys; print(sys.version.split(' ')[0])"') DO SET PYTHON_MAJOR=%%G
FOR /f "tokens=2 DELims=." %%G IN ('%PGADMIN_PYTHON_DIR%/python.exe -c "import
sys; print(sys.version.split(' ')[0])"') DO SET PYTHON_MINOR=%%G
FOR /f "tokens=3 DELims=." %%G IN ('%PGADMIN_PYTHON_DIR%/python.exe -c "import
sys; print(sys.version.split(' ')[0])"') DO SET PYTHON_REVISION=%%G
--
Although the slash does not affect the compilation, I think it is better to
modify it.
Here is a patch for make.bat.
Please review.
Best Regards!
Zhang Jie
make.patch
Description: make.patch
