Skip to content
The latest version of DbVisualizer was released 2024-11-27DOWNLOAD HERE ->

Database Profile changes in 9.5

This document collects changes in the database profile framework in DbVisualizer 9.5.

New/changed attributes for Command

These are the changes in the attributes for the Command element.

  • exectype="script/asis/explain" (replaces parsesql="true/false")
    • script will execute each individual statement in a multi statement script, asis will execute all of the SQL as one statement and explain will try generate an explain plan for the single statement
  • processmarkers="true/withdriver"

    • Defines whether markers such as :name, ? should be processed either internally by DbVisualizer or by letting the driver (if it supports it) do the parsing
    • autocommit="true/false"
    • Specifies if the command should be auto committed after execution
    • whensuccess="commit/rollback/ask"
    • If autocommit="false" then this attribute defines what to do after successful execution
    • whenerror="commit/rollback/ask/ignore"
    • If autocommit="false" then this attribute defines what to do after failed execution

Action element improvements

  • Moved processmarkers="true|false" to Commandprocessmarkers="true|withdriver"
  • Removed execute value for the mode attribute (since it is default)
  • Removed resulttype="resultset|dbmsoutput" and replaced by using the @set server output client side command in script when needed
  • Replaced resultaction="ask|show|showtext|script" with resultaction="mergeastext/mergeasscript"
  • Added resulttarget="editor"

Notes:

  • If none of resultaction and resulttarget is present and there are results generated, the results are presented as tabs (same as SQL Commander). The result set tab option to Merge All Result Sets tabs is available
  • If resultaction is present all result sets will be merged into a single result tab
  • If resulttarget is present it will copy the merged results to a new SQL Commander tab

New runsetdefaultwhenvaluechanged attribute

The runsetdefaultwhenvaluechanged attribute defines what other inputs should be triggered when the value for the input is changed. Whenever this happens the other inputs Default commands are executed. This is useful if there are for example two list inputs. Changing the selected entry in the first list will then notify the second input so that its Default command is re-executed using the new value as condition.

<Action id="postgresql-settings-alter" label="Alter Setting" reload="true" icon="edit"> 
   <Input name="setting" label="Setting" runsetdefaultwhenvaluechanged="value,desc" style="list"> 
      <Values> 
         <Command><SQL><![CDATA[select name from pg_settings]]></SQL></Command> 
      </Values> 
   </Input> 
   <Input name="value" label="Value" style="text"> 
      <Default> 
         <Command><SQL><![CDATA[select setting from pg_settings where name = '${setting}']]></SQL></Command> 
      </Default> 
   </Input> 
   <Input name="desc" label="Description" style="text" editable="false"> 
      <Default> 
         <Command><SQL><![CDATA[select short_desc from pg_settings where name = '${setting}']]></SQL></Command> 
      </Default> 
   </Input> 
   <Command> 
      <SQL><![CDATA[alter system set ${setting} = ${value}]]></SQL> 
   </Command> 
   <Confirm> 
      Really alter setting ${setting}? 
   </Confirm> 
</Action>

Check list style

The new check-list input shows a list with options allowing multiple selections.

<Input label="Weekdays" name="weekdays" style="check-list"> 
   <Arg name="output" value="jschours[${value}] = true"/> 
   <Arg name="newline" value=", "/> 
   <Labels>Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday</Labels> 
   <Values>00|11|22|33|44|55|66</Values> 
   <Default>22|44</Default> 
</Input>

The <Arg name="output" value="jschours[${value}] = true"/> defines that for each selected value in the list (ex Monday, Thursday, Friday), the output in the weekdays variable will be:

jschours[11] = true,jschours[33] = true, jschours[44] = true

The newline argument defines the string used to separate the output entries.

Check style

Check inputs now supports a second values argument:

<Input label="Check with true/false value" name="enabled" style="check"> 
   <Values>On|Off</Values> 
   <Default>Off</Default> 
</Input>

The first, "On" is set if the checkbox is checked. "Off" is set if the checkbox is unchecked. If the second argument is not specified an empty string is set if the checkbox is unchecked.

Action layout

  • Improved support for having input fields on the same row
  • Previously when using linebreak="false" any label on that row was not displayed. Now if there is a label it is shown
  • New: type="label" input attribute. Used to create just a label. Useful when linebreak="false" by having a general label for the row and then each component can have their individual label. Ex: "Days: Mon: X Tue: X"
  • New: type="note" input attribute. Is the exact samt as "label" but can be used to specify some informative text that is not suffixed with a colon

Changes for DataNode and GroupNode

  • In addition to the label attribute the new label1 is now available. In the objects tree it will show optional information about the object. This is displayed in italic gray text.
  • The sort attribute has been replaced with the ProcessDataSet action="sortcolumn"

New utility class

The new #util class can be used in profiles to primarily perform conditional checks such as what target database version is used. This is useful to adjust what parts of the database profile should be visible to the user. These are the methods available:

boolean #util.isNull(String string)
boolean #util.isNullOrWhitespace(String string)
boolean #util.isDatabaseVersionLT(Integer major)
boolean #util.isDatabaseVersionLT(Integer major, Integer minor)
boolean #util.isDatabaseVersionLTE(Integer major)
boolean #util.isDatabaseVersionLTE(Integer major, Integer minor)
boolean #util.isDatabaseVersionEQ(Integer major)
boolean #util.isDatabaseVersionEQ(Integer major, Integer minor)
boolean #util.isDatabaseVersionGTE(Integer major)
boolean #util.isDatabaseVersionGTE(Integer major, Integer minor)
boolean #util.isDatabaseVersionGT(Integer major)
boolean #util.isDatabaseVersionGT(Integer major, Integer minor)
boolean #util.isDatabaseType(String type)
boolean #util.isNotDatabaseType(String type)
boolean #util.replaceAll(String source, String search, String replacement )

Changed icons definition

Many icons are composed of a full size (16x16, 24x24) base icon and a badge icon (half the size) representing things like, new, delete, error, clock, and so on. The badge icon is typically anchored south east on the base icon.

Prior to DbVisualizer 9.5 there were no separate badge icons as these were integrated with the base icon resulting in many duplicated base icons only with different badge symbols.

In DbVisualizer 9.5 a new icon library was introduced and now base icons are separate from the badge icons. Any badge icons that should be attached are defined in the icons.prefs file and the final icon is dynamically created.