From 4db0a6524d0f241af41f616d458d244d2b23602e Mon Sep 17 00:00:00 2001 From: Aditya Toshniwal Date: Fri, 28 Feb 2020 15:27:01 +0530 Subject: [PATCH] =?UTF-8?q?Fix=20an=20issue=20where=C2=A0debugger=20not=20?= =?UTF-8?q?showing=20all=20arguments=C2=A0anymore=20after=20hitting=20SQL?= =?UTF-8?q?=20error=20while=20debugging.=20Fixes=20#5101?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added a "Clear All" button to the argument dialog which will clear all the saved arguments values from SQLite DB. --- docs/en_US/debugger.rst | 2 + docs/en_US/images/debug_params.png | Bin 30249 -> 48886 bytes docs/en_US/release_notes_4_19.rst | 1 + web/pgadmin/static/js/backgrid.pgadmin.js | 52 ++++++++++ web/pgadmin/tools/debugger/__init__.py | 50 ++++++++- .../tools/debugger/static/js/debugger_ui.js | 97 +++++++++++++++--- .../tools/debugger/static/scss/_debugger.scss | 7 ++ 7 files changed, 195 insertions(+), 14 deletions(-) mode change 100755 => 100644 docs/en_US/images/debug_params.png diff --git a/docs/en_US/debugger.rst b/docs/en_US/debugger.rst index 99fcaa85c..6c646100f 100644 --- a/docs/en_US/debugger.rst +++ b/docs/en_US/debugger.rst @@ -81,6 +81,8 @@ Use the fields on the *Debugger* dialog to provide a value for each parameter: Provide values required by the program, and click the *Debug* button to start stepping through the program. +The values of the arguments provided here are saved. The values will be pre-filled +next time the dialog opens. To clear the values, use the *Clear All* button. .. image:: images/debug_step_in.png :alt: Debugger step-in demo diff --git a/docs/en_US/images/debug_params.png b/docs/en_US/images/debug_params.png old mode 100755 new mode 100644 index 8915fae49ea14333527f0ab6253bfff74652f09f..dcc6c630f3d92937d7dd9ae52278887f29d28666 GIT binary patch literal 48886 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 im+8;4wF(BlVQcVWF-nPoBALV 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 literal 30249 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 F`)}>i#aaLW diff --git a/docs/en_US/release_notes_4_19.rst b/docs/en_US/release_notes_4_19.rst index bd622de2c..b4866abcc 100644 --- a/docs/en_US/release_notes_4_19.rst +++ b/docs/en_US/release_notes_4_19.rst @@ -28,6 +28,7 @@ Bug fixes | `Issue #4996 `_ - Improve the style of the highlighted code after query execution for Dark mode. | `Issue #5058 `_ - Ensure that AlertifyJS should not be visible as a title for alert dialog. | `Issue #5077 `_ - Changed background pattern for geometry viewer to use #fff for all themes. +| `Issue #5101 `_ - Fix an issue where debugger not showing all arguments anymore after hitting SQL error while debugging. | `Issue #5107 `_ - Set proper focus on tab navigation for file manager dialog. | `Issue #5115 `_ - Fix an issue where command and statements were parsed incorrectly for Rules. | `Issue #5142 `_ - Ensure that all the transactions should be canceled before closing the connections when a server is disconnected using pgAdmin. diff --git a/web/pgadmin/static/js/backgrid.pgadmin.js b/web/pgadmin/static/js/backgrid.pgadmin.js index 4ce46d0bf..bb249268e 100644 --- a/web/pgadmin/static/js/backgrid.pgadmin.js +++ b/web/pgadmin/static/js/backgrid.pgadmin.js @@ -1916,6 +1916,58 @@ define([ }, }); + Backgrid.BooleanCell = Backgrid.BooleanCell.extend({ + className: 'boolean-cell', + + enterEditMode: function() { + this.$el.addClass('editor'); + $(this.$el.find('input[type=checkbox]')).trigger('focus'); + }, + + exitEditMode: function() { + this.$el.removeClass('editor'); + }, + + events: { + 'change input': 'onChange', + 'blur input': 'exitEditMode', + 'keydown': 'onKeyDown', + }, + + onChange: function(e) { + var model = this.model, + column = this.column, + val = this.formatter.toRaw(this.$input.prop('checked'), model); + + this.enterEditMode(); + // on bootstrap change we also need to change model's value + model.set(column.get('name'), val); + model.trigger('backgrid:edited', model, column, new Backgrid.Command(e)); + }, + + render: function () { + this.$el.empty(); + var model = this.model, column = this.column; + var editable = Backgrid.callByNeed(column.editable(), column, model); + var align_center = column.get('align_center') || false; + let checked = this.formatter.fromRaw(model.get(column.get('name')), model); + let id = `column.get('name')_${_.uniqueId()}`; + + this.$el.empty(); + this.$el.append( + $(`

+ + +
`) + ); + this.$input = this.$el.find('input'); + this.delegateEvents(); + return this; + }, + }); + return Backgrid; }); diff --git a/web/pgadmin/tools/debugger/__init__.py b/web/pgadmin/tools/debugger/__init__.py index e75e2eb70..2336d538d 100644 --- a/web/pgadmin/tools/debugger/__init__.py +++ b/web/pgadmin/tools/debugger/__init__.py @@ -241,7 +241,7 @@ class DebuggerModule(PgAdminModule): 'debugger.start_execution', 'debugger.set_breakpoint', 'debugger.clear_all_breakpoint', 'debugger.deposit_value', 'debugger.select_frame', 'debugger.get_arguments', - 'debugger.set_arguments', + 'debugger.set_arguments', 'debugger.clear_arguments', 'debugger.poll_end_execution_result', 'debugger.poll_result' ] @@ -1797,9 +1797,10 @@ def set_arguments_sqlite(sid, did, scid, func_id): db.session.add(debugger_func_args) - db.session.commit() + db.session.commit() except Exception as e: + db.session.rollback() current_app.logger.exception(e) return make_json_response( status=410, @@ -1810,6 +1811,51 @@ def set_arguments_sqlite(sid, did, scid, func_id): return make_json_response(data={'status': True, 'result': 'Success'}) +@blueprint.route( + '/clear_arguments////', + methods=['POST'], endpoint='clear_arguments' +) +@login_required +def clear_arguments_sqlite(sid, did, scid, func_id): + """ + clear_arguments_sqlite(sid, did, scid, func_id) + + This method is responsible for clearing function arguments + from sqlite database + + Parameters: + sid + - Server Id + did + - Database Id + scid + - Schema Id + func_id + - Function Id + """ + + try: + db.session.query(DebuggerFunctionArguments) \ + .filter(DebuggerFunctionArguments.server_id == sid, + DebuggerFunctionArguments.database_id == did, + DebuggerFunctionArguments.schema_id == scid, + DebuggerFunctionArguments.function_id == func_id) \ + .delete() + + db.session.commit() + + except Exception as e: + db.session.rollback() + current_app.logger.exception(e) + return make_json_response( + status=410, + success=0, + errormsg=str(e) + ) + + return make_json_response(data={'status': True, 'result': 'Success'}) + + def convert_data_to_dict(conn, result): """ This function helps us to convert result set into dict diff --git a/web/pgadmin/tools/debugger/static/js/debugger_ui.js b/web/pgadmin/tools/debugger/static/js/debugger_ui.js index cab459476..91f97a471 100644 --- a/web/pgadmin/tools/debugger/static/js/debugger_ui.js +++ b/web/pgadmin/tools/debugger/static/js/debugger_ui.js @@ -69,7 +69,7 @@ define([ // As we are getting this value as text from sqlite database so we need to type cast it. if (model.get('value') != undefined) { model.set({ - 'value': parseInt(model.get('value')), + 'value': isNaN(parseInt(model.get('value'))) ? null : parseInt(model.get('value')), }, { silent: true, }); @@ -176,6 +176,7 @@ define([ this.set('debug_info', debug_info); this.set('restart_debug', restart_debug); this.set('trans_id', trans_id); + this.set('is_edb_proc', is_edb_proc); // Variables to store the data sent from sqlite database var func_args_data = this.func_args_data = []; @@ -289,6 +290,7 @@ define([ label: gettext('Null?'), type: 'boolean', cell: 'boolean', + align_center: true, }, { name: 'expr', @@ -296,6 +298,7 @@ define([ type: 'boolean', cellFunction: cellExprControlFunction, editable: disableExpressionControl, + align_center: true, }, { name: 'value', @@ -304,6 +307,7 @@ define([ editable: true, cellFunction: cellFunction, headerCell: value_header, + align_center: true, }, { name: 'use_default', @@ -413,12 +417,12 @@ define([ // Need to update the func_obj variable from sqlite database if available if (func_args_data.length != 0) { for (i = 0; i < func_args_data.length; i++) { + index = func_args_data[i]['arg_id']; if (debug_info['proargmodes'] != null && - (argmode[i] == 'o' && !is_edb_proc)) { + (argmode[index] == 'o' && !is_edb_proc)) { continue; } - index = func_args_data[i]['arg_id']; values = []; if (argtype[index].indexOf('[]') != -1) { vals = func_args_data[i]['value'].split(','); @@ -565,14 +569,17 @@ define([ }); grid.render(); - $(this.elements.content).html(grid.el); + let wrap_div = document.createElement('div'); + wrap_div.classList.add('debugger-args'); + wrap_div.appendChild(grid.el); + $(this.elements.content).html(wrap_div); // For keyboard navigation in the grid // we'll set focus on checkbox from the first row if any var grid_checkbox = $(grid.el).find('input:checkbox').first(); if (grid_checkbox.length) { setTimeout(function() { - grid_checkbox.trigger('click'); + grid_checkbox.trigger('focus'); }, 250); } @@ -585,6 +592,9 @@ define([ setup: function() { return { buttons: [{ + text: gettext('Clear All'), + className: 'btn btn-secondary pull-left fa fa-eraser pg-alertify-button', + },{ text: gettext('Cancel'), key: 27, className: 'btn btn-secondary fa fa-times pg-alertify-button', @@ -899,6 +909,69 @@ define([ return false; } + + if (e.button.text === gettext('Clear All')) { + let self = this; + let baseUrl = null; + + if (self.setting('restart_debug') == 0) { + let selected_item = pgBrowser.tree.selected(); + let item_data = pgBrowser.tree.itemData(selected_item); + if (!item_data) + return; + + let node = pgBrowser.Nodes[item_data._type]; + let treeInfo = node.getTreeNodeHierarchy.call(node, selected_item); + + let f_id; + if (item_data._type == 'function') { + f_id = item_data._id; + } else if (item_data._type == 'procedure') { + f_id = item_data._id; + } else if (item_data._type == 'edbfunc') { + f_id = item_data._id; + } else if (item_data._type == 'edbproc') { + f_id = item_data._id; + } + + baseUrl = url_for('debugger.clear_arguments', { + 'sid': treeInfo.server._id, + 'did': treeInfo.database._id, + 'scid': treeInfo.schema._id, + 'func_id': f_id, + }); + } else { + baseUrl = url_for('debugger.clear_arguments', { + 'sid': self.setting('debug_info').server_id, + 'did': self.setting('debug_info').database_id, + 'scid': self.setting('debug_info').schema_id, + 'func_id': self.setting('debug_info').function_id, + }); + } + $.ajax({ + url: baseUrl, + method: 'POST', + data: { + 'data': JSON.stringify(args_value_list), + }, + }).done(function() { + /* Disable debug button */ + self.__internal.buttons[2].element.disabled = true; + self.main(self.setting('title'), self.setting('debug_info'), + self.setting('restart_debug'), self.setting('is_edb_proc'), + self.setting('trans_id') + ); + self.prepare(); + }).fail(function(e) { + Alertify.alert( + gettext('Clear failed'), + e.responseJSON.errormsg + ); + }); + + e.cancel = true; + return true; + } }, build: function() { Alertify.pgDialogBuild.apply(this); @@ -914,9 +987,9 @@ define([ enable the debug button otherwise disable the debug button. */ if (this.func_args_data.length == 0) { - this.__internal.buttons[1].element.disabled = true; + this.__internal.buttons[2].element.disabled = true; } else { - this.__internal.buttons[1].element.disabled = false; + this.__internal.buttons[2].element.disabled = false; } /* @@ -933,7 +1006,7 @@ define([ for (var i = 0; i < this.collection.length; i++) { if (this.collection.models[i].get('is_null')) { - obj.__internal.buttons[1].element.disabled = false; + obj.__internal.buttons[2].element.disabled = false; enable_btn = true; continue; } @@ -944,15 +1017,15 @@ define([ enable_btn = true; if (this.collection.models[i].get('use_default')) { - obj.__internal.buttons[1].element.disabled = false; + obj.__internal.buttons[2].element.disabled = false; } else { - obj.__internal.buttons[1].element.disabled = true; + obj.__internal.buttons[2].element.disabled = true; break; } } } if (!enable_btn) - obj.__internal.buttons[1].element.disabled = false; + obj.__internal.buttons[2].element.disabled = false; }; })(this) ); @@ -960,7 +1033,7 @@ define([ this.grid.listenTo(this.debuggerInputArgsColl, 'backgrid:error', (function(obj) { return function() { - obj.__internal.buttons[1].element.disabled = true; + obj.__internal.buttons[2].element.disabled = true; }; })(this) ); diff --git a/web/pgadmin/tools/debugger/static/scss/_debugger.scss b/web/pgadmin/tools/debugger/static/scss/_debugger.scss index 4fa35195f..30ace0af7 100644 --- a/web/pgadmin/tools/debugger/static/scss/_debugger.scss +++ b/web/pgadmin/tools/debugger/static/scss/_debugger.scss @@ -16,3 +16,10 @@ -ms-user-select: text; user-select: text; } + +.debugger-args { + display: block; + width: 100%; + height: 100%; + overflow: auto; +}