options["scale"] = 1 if not path: # support for retina display if mforms.App.get().backing_scale_factor() > 1: path = mforms.App.get().get_user_data_folder()+"/[email protected]" options["scale"] = 2 else: path = mforms.App.get().get_user_data_folder()+"/explain.png" w, h = render_json_data_to_file(self.json_data, None, path, options) self.img.set_image(path) self.img.set_size(w, h) @ModuleInfo.plugin("wb.sqlide.visual_explain", caption="Visual Explain", input=[wbinputs.currentQueryEditor()]) @ModuleInfo.export(grt.INT, grt.classes.db_query_QueryEditor) def visualExplain(editor): version = editor.owner.serverVersion if version.majorNumber < 5 or version.minorNumber < 6: # explain format=json only supported in 5.6+ mforms.Utilities.show_message("Visual Explain", "Visual Explain is supported in MySQL servers 5.6 or newer, but the one you are connected to is %s.%s.%s." % (version.majorNumber, version.minorNumber, version.releaseNumber), "OK", "", "") else: statement = editor.currentStatement if statement: rset = editor.owner.executeScript("EXPLAIN FORMAT=JSON %s" % statement) if rset: json = rset[0].stringFieldValue(0) view = ExplainTab(json)
continue # TODO: log a warning here resultset.addNewRow() for column, value in enumerate(converted_values): if isinstance(value, str): resultset.setStringFieldValue(column, value) elif isinstance(value, int): resultset.setIntFieldValue(column, value) elif isinstance(value, float): resultset.setFloatFieldValue(column, value) else: resultset.setFieldNull(column) resultset.addNewRow() # needed in Windows to refresh display for last row return 0 @ModuleInfo.plugin("wb.sqlide.executeToTextOutput", caption= "Execute Query Into Text Output", input= [wbinputs.currentQueryEditor()]) @ModuleInfo.export(grt.INT, grt.classes.db_query_QueryEditor) def executeQueryAsText(qbuffer): editor = qbuffer.owner sql = qbuffer.selectedText or qbuffer.script resultsets = editor.executeScript(sql) if resultsets: view = TextOutputTab("") dock = mforms.fromgrt(qbuffer.resultDockingPoint) dock.dock_view(view, "", 0) view.set_title("Query Output") dock.select_view(view)
# support for retina display if mforms.App.get().backing_scale_factor() > 1: path = mforms.App.get().get_user_data_folder( ) + "/[email protected]" options["scale"] = 2 else: path = mforms.App.get().get_user_data_folder() + "/explain.png" w, h = render_json_data_to_file(self.json_data, None, path, options) self.img.set_image(path) self.img.set_size(w, h) @ModuleInfo.plugin("wb.sqlide.visual_explain", caption="Visual Explain", input=[wbinputs.currentQueryEditor()]) @ModuleInfo.export(grt.INT, grt.classes.db_query_QueryEditor) def visualExplain(editor): version = editor.owner.serverVersion if version.majorNumber < 5 or version.minorNumber < 6: # explain format=json only supported in 5.6+ mforms.Utilities.show_message( "Visual Explain", "Visual Explain is supported in MySQL servers 5.6 or newer, but the one you are connected to is %s.%s.%s." % (version.majorNumber, version.minorNumber, version.releaseNumber), "OK", "", "") else: statement = editor.currentStatement if statement: rset = editor.owner.executeScript("EXPLAIN FORMAT=JSON %s" %