SQLTools 1.4.1 branch 58X


  1. New functionality
    1. a new sql / sql*plus command parser / performer
      1. [5] sql*plus commands: describe, connect, ...
      2. [3] TOAD like mode for execution of sql command
        [space line as separator for sql statements]
      3. parser / performer
      4. sql*plus commends: exec, define, undef
        [define command has been improved significantly]
    2. [5] (90%) db grid support for TIMESTAMP, INTERVAL, XMLTIPE, format mask for NUMBER
      [Implemented in branch 59, will be available after merging]
    3. [5] export grid data in sql-script format (and sql*loader)
    4. [4] session viewer

  2. Improving existing functionality
    1. [7] implement a filter for Object List
      [Implementation notes: This is client-side implementation (reg exp). It should support oracle '_%' and reg exp expressions as well.]
    2. [7] add a input field in the Fidn Object window
    3. [5] cleanup history (from date, from number)
    4. [5] add text document template
    5. [5] hide internal oracle tables/indexes in Object List and ignore them in ExtractDDL
      [implement a regexp-based filter which can be changes in "advanced" settings]
    6. [5] handle oracle exception-warning about pasword expiration and add change password dialog
    7. [5] add a list of ignored errors for sql script execution
    8. [5] ask user to create plan_table if it does not exist
      [probably we use the latest 10g table format - test it]
    9. [5] info dialog (env)
    10. [5] if a transaction is started by EXPLAIN PLAN, commit it to prevent a commit/rollback request on exit
    11. [5] add "open tnsnames.ora" to tools menu
    12. [4] add posibility to choose name for new documents and rename for already created but not saved
      [option to create a new document w/o saving on exit?]
    13. [4] an option to control reset a editor "modified" attribute for text/scripts loaded from db (reverse-engineered)
    14. [4] add command purge recyclebin for 10g
    15. [4] improve grid export menu/commands
      [create individual commands for each particular export format instead of the selectior in grid export settings]
    16. [4] reimplemet the object tree for Find Object
    17. [4] extensive testing of compatibility with 7.3 and 8.05
    18. [3] xml/text export for explain plan
    19. [3] next error is too slow because of output log redrawing
    20. [3] ESC in control bar should return focus to the current active mdi window, and maybe close froat control bar
    21. [3] tab for grid navigation
    22. [3] append "create use" template to pl/sql templates
    23. [3] add CSS for grid export in HTML format

  3. Bugs
    1. [6] The bug report dialog appears on disconnecting if connection was closed by server
      [Probably all oci exceptions should be processed w/o bug reporting because the most of them are raised on server side. ]
    2. [6] copy grid column included exra leading spaces
    3. [6] trigger reverse-engineering fails
      [CREATE TABLE owidat (dummy VARCHAR2(1));

      CREATE OR REPLACE TRIGGER IDXNOTNULL BEFORE INSERT OR UPDATE ON OWIDAT
      REFERENCING NEW AS NEWFIELD FOR EACH ROW
      BEGIN
      NULL;
      END;
      /]
    4. [6] CSV export: Excel ignores leading zeros for text columns
      [Solution:
      c1,c2,c3
      ="paul",="00235",="red"
      ="jim",="00187",="yellow"
      ="sue",="00133",="green"]
    5. [6] error position fails for function/procedure/package reverse engineering if a procedure header contains '\n'
    6. [5] sql error causes a bug report
      [SELECT To_Date(Decode(least(nvl("NAECHSTE_WP",
      >to_date('01.01.9999','dd.mm.yyyy'))), to_date('01.01.9999','dd.mm.yyyy'),
      >NULL, least(nvl("NAECHSTE_WP", to_date('01.01.9999','dd.mm.yyyy')))),
      >'dd.mm.yyyy') FROM em_transportmittel;]
    7. [5] trigger reverse engineering fails if a trigger name or a column name contains "on"
    8. [5] statement execution takes a while on read-only connection if it's not select
    9. [4] toolbar/control bar windows might be moved out of a visible desktop area
      [No way get it back except reset registry]
    10. [4] a very long column (>64K) value may be a cause of slow grid painting and even windows crash
    11. [4] attempt to find (F12) db object by name with ending . ("dbms_job.") causes an pl/sql exception
    12. [4] bug report on regexp search
      [SQLTools reported an error while processing a replace operation using
      regexp operators. I have a list of names, in the format
      <tab>'<lastname>, <firstname>'
      I was trying to replace this with a string like:
      Exec tier3fixes.userfromname( '<lastname>, <firstname>' );
      My "Find what" string was: ^\t(*)
      My "Replace with" string was: exec tier3fixes.userfromname( \1 );]
    13. [4] extract ddl fails in 10g
    14. [3] unknown exception on canceling drop table statement
    15. [3] sqltools may fails with "coi8: cannot allocate handle" on some pc
    16. [3] ora-01877: string is too long for internal buffer
    17. "Next" and "Previous" in Grid are inverted
    18. external authentication does not work
    19. some servers may return very long strings due to oracle bug
    20. all compilation errors are ignored for Oracle7
    21. all compilation errors are ignored after "alter session set current schema"

  4. Internal improvements
    1. [5] exception model: add a new base class for application exceptions which will not be traceable
      [The cost of StackTrace is too hight, but some application exceptions are a part of normal flow.
      ]

  5. OpenEditor
    1. New functionality
      1. [5] automatically highlight or underline the matching braces
      2. [5] context menu for toolbars
      3. [5] projects/favorites
      4. [5] history
      5. [5] find in files
      6. [5] open file under cursor
      7. [5] watch and reload changed settings
    2. Bugs
      1. [5] add default extension on file save
      2. [5] exception on find match
        [SELECT * FROM xis_nt_mo_me#v mo
        WHERE NOT EXISTS (
        SELECT * FROM xis_nt_mo_relations
        WHERE child_id = mo.id
        AND (relation_rule_id, stereotype_id) IN
        (SELECT rul_id, rul_ste_id FROM xis_dd_relation_rules#t WHERE rul_name = 'EMS_M_ME')
        )
        >> EOF <<]

  6. New functionality for future releases
    1. [5] change copyright before publishing
    2. [5] objects/columns/methods dropdown list
    3. [5] code navigator
    4. [5] object properties control bar
    5. [5] sort for data grid
    6. [5] using dba views when they are available for the current connection
    7. [5] project, sql library
    8. [5] table/view viewer
    9. [5] move sql execution in a backgroud thread
    10. [5] sql*plus like bind variables
    11. [5] table/index partitions in reverse-engineering
    12. [5] Insert/delete/update operation for data grid
    13. [5] support for vss and cvs - automatic check out
    14. [5] implement "find in source"
      ["Find in Source" that would search in all DB sources types. After entering the usual search criteria (String to search, whole word, match case,....) and specific criteria (find in all types or selected: procedure, function, pack, trigger, object type, views,...?) a result window could show the list of sources + line numbers that matched the criteria. By clicking on the sources name, an editor window would be automatically open (and why not at the first matching line).]
    15. [4] execute scripts from the command line
    16. [3] multiple connections
    17. [3] select * from object table/view

  7. Research
    1. [0] http://www.aquafold.com/screenshots.html