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)
                
Exemple #2
0
                        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" %