Manual Instant JChem schema admin functions

Most relevant administration functions are directly accessible from the IJC user interface. This document describes some things that are not currently possible through the IJC UI and must be performed manually.

Removing bad items from the IJC meta data tables

The symptoms

On rare occasions the meta data that describes the database contents to Instant JChem may become corrupted. When this happens there may be items that are not understood and cause error messages to be displayed on startup. The only current way to avoid this is to manually remove these bad items from the IJC meta data tables. The error message will report the ID of the offending item (a 32 character hexadecimal string). This ID will correspond to an item in the IJC_SCHEMA table.

The solution

Before performing this operation you are advised to back up the IJC_SCHEMA table in case the wrong item(s) are deleted.

Connect to the database using a SQL editor (e.g. the database explorer provided with IJC). Examine the contents of the IJC_SCHEMA table to confirm that there is a row which has a ITEM_ID with the corresponding value. Delete this row using SQL such as this:

DELETE FROM IJC_SCHEMA WHERE ITEM_ID = 'uuid' OR PARENT_ID = 'uuid'

where uuid is replaced with the actual 32 character ID.

Handling of missing underlying data structures

Database Columns and Tables

It is clearly possible for a user with administration access to drop a table or remove a column. The previously reported warnings are now replaced with a link which the user will see at logging in time in the output window. On clicking the link, the user can optionally chose to amend the schema by removing either the field or entity which references the missing column or table respectively. Any link not processed will subsequently re-appear if the user disconnect/connect again.
Missing Edge
In the case of forms and edges which reference entities that no longer exist, IJC will remove the edge item and any bound form widget will be shown as invalid.

Positioning of null values when sorting

his article [1] summarizes the default ORDER BY behaviour for many RDBMs. In short the default behaviour is as follows:

RDBMs

ORDER BY .. ASC

ORDER BY .. DESC

Derby

NULLs last

NULLs first

Oracle

NULLs last

NULLs first

SQL Server

NULLs last

NULLs first

MySQL

NULLs first

NULLs last

[1] http://troels.arvin.dk/db/rdbms/#select-order_by

images/download/attachments/1802666/ijc.png