MIM Server Release Notes

 

This document details the major enhancements for each release. For a listing of all changes and bug fixes, please see the Change Log.

Note: The "CHANGES.all" file is bundled with each release.

 

Change Log for Solaris

Change Log for Linux

 

 

 

 

Version 4.6

 

1. Forward Curve Functionality

2. Second and millisecond data accessible from the MIM query language

3. Composite columns accessible from the MIM query language

4. C Stored Functions

 

Future Enhancements:

64-bit support for Linux

 

 

Version 4.5.26  

 

NEW QUERY LANGUAGE BUILTINS:

   mid_point

   median

   dividend_adjusted_return

   compound_return

 

NEW QUERY EXECUTION OPTIONS:

   %exec.undef_variable_value, undefined variable initial value, default is 0.0

   %exec.process_nan_values, value of NO can boost query performance because it doesn't process NaN values, default is YES.

 

NEW BMIM COMMANDS:

   suppress_relation_not_found

   check_relation_not_found

   entitlements_write_all  

 

MILLISECOND DATA SUPPORT:

   Support for millisecond timeseries.

   Added BMIM commands:  database_def_millisecond_file.

   XmimPutRecords() supports millisecond data.

   XmimGetRecords() supports millisecond data.

   xmim_get application, and new application, xmim_put, support millisecond data.

   NOTE: - Queries with millisecond data are supported in 4.6.x.

 

64-BIT SUPPORT:

  64-bit -vs- 32-bit information is provided in xmim_svr_info (server.info)

  and in "bmim_client -v".

  64-bit support is currently for Solaris only.

 

CORRECTIONS FACILITY:

   Corrections facility now works properly.

 

PORTMAPPER CHANGES / EXPLICIT PORTS:

   Stop use of portmapper for high ports.

 

   Added -M flag to xmim_server and xmim_slave_server to stop

   registration with the portmapper.

 

   Port numbers are specified as usual (-p for master, -n for slave)

   when starting the server.

 

   Ports 0-128 are standard ports and are assigned to the portmapper.

 

   Ports 1056-127968 are explicit ports. Typically values will be in the

   range 1056 to 12000 every 32.   The TCP port is mapped back to an

   RPC program number, computed as follows:  (tcp port - 1024)/32 + 128.

   The ports are used in 32 port blocks.

 

   Example: For static port 8128:

            Start server with this command:  xmim_server -p 8128 -M

            TCP ports will be:

            8128=master,

            8129=4091 writer slave,

            8130=tick writer,

            8128+4=slave 0,

            8128+5=slave 1, ...

            RPC program number will be (8128 - 1024)/32 + 128 = 350

 

 

CUSTOMER ENHANCEMENTS:

NEW QUERY LANGUAGE BUILTINS:

. Incident ID: 13870

   Adding mid_point as builtin function for the query language.  It is exactly the same as midpoint. 

   This fixes a problem when there is also a "midpoint" column that conflicts with the name of the "midpoint" builtin.

. Incident ID: 13350

   Adding new builtin function, median, to the query language.

. Incident: 19595

   Added a new built-in function, dividend_adjusted_return, to the query language.

. Incident: 19080

   Added a new built-in function, compound_return, to the query language.

NEW QUERY EXECUTION OPTIONS:

. Incident ID: 16489

    Adding execution option %exec.undef_variable_value. Default value is 0.0.

     Set this variable if you wish to provide a different default value for undefined

     variables.  (example,  %exec.undef_variable_value: NaN)

. Incident ID: 16439

   Adding execution option, %exec.process_nan_values. Default value is YES.

     %exec.process_nan_values: NO can greatly improve query performance by skipping over all NaN values

     (i.e. not processing them).  For some queries,skipping NaN values is OK.  But, for other queries, this

     could yield incomplete results.

OTHER:

. Incident ID: 14078

   Setting the bmim relation_add command trade pattern default

   value.

. Incident: 22394

   Change master/slave behavior to attempt to kill heavily-utilized slaves for

   a "fresh start".

. Incident: 21891

   Customers need a way to list the unaliased constituents of a category name.

   Therefore, we added a utility program, xmim_get_constituents.

. Incident ID: 16761

   Adding relation name to time series error message.

 

 

CUSTOMER BUG FIXES:

. Incident ID: 16037

   Fix the Macro editor save same macro multi-time bug.

. Incident ID: 15915

   Fix "Can not read time series from disk" problems.

. Incident ID: 17580

   facts_write could not read composite column data.

. Incident ID: 17823

   Changed code for adding relation so that relation-names with

   colon character can not be added. 

. Incident: 18192

   Martin Luther King Day was not recognized as a holiday.

. Incident: 17783

   xmim_client could not connect to server after it was restarted.

. Incident: 18721

   Could not get intraday data when end time is after trade end time.

. Incident: 18721

   Could not get intraday data when end time is after trade end-time.

   This is refix for other relations.

 

 

OTHER FIXES:

.  Fixed api calls for XmimGetSvrCustomSearch, XmimGetSvrTransformers,

    XmimGetSvrMacros.  Calls previously were looping, but now can stop

    looping by checking the result vector length.

. Fixed BMIM formula_add command.

. Removed a flag that was causing some of the continuous contracts

   to not be regenerated by regen_continuous.

.  Fixed display of error message for lock_files.

. Server assumed . and .. would be first directories from readdir. On

   Linux 2.6 kernel this is not true. Server had inifinite loop on startup.

. Remove temporary files when doing corrections.

. xmim_client could not graph data file.

. XmimLoadBmimScript did not work when given a query to execute,

   due to lack of initialization.

. Fix bug in entitlements where the "root" user (the server owner) was not getting a

   free pass during certain BMIM operations such as relation_modify.

. Added changes to attempt to avoid 4091 race conditions.

. Extended the size of error messages from 512 to 1024 bytes.

. Fixed problem with Linux entitlements_write command in BMIM.

 

 

OTHER ENHANCEMENTS:

. Added column name to the output of the new xmim_get_impvol utility.

. BMIM now has seperate error messages for Invalid Relation, Duplicate Relation,

   Invalid Column, and Duplicate Column.  Previously, the Relation messages

   were combined into one message so that you did not know if the relation was

   invalid or duplicate.  The previous column message had the same problem.

. Added database name to some of the "Relation does not exist"

   error messages.

. Added 2 new BMIM commands:

        #v4.5 suppress_relation_not_found

        #v4.5 check_relation_not_found

   These new commands suppress/unsuppress the "Relation does not exist" message

   from the relation_modify command. (only for the relation_modify command)

. Change xmim_find to work with leave relations and partial paths.

   Will now read relations from stdin. So, a file of symbols can be used.

       echo "CL_2004Z" | xmim_find -o np -

. Use svc_run for program loops to allow large number of FD's.

. Changes to xmim_find:

   a) Changed xmim_find to use full pathnames of relations so that

      duplicate relations do not make it stop processing.

   b) Changed the slave to remove a UMR and also make a better error

      message when duplicate relations are found.

   c) Changed xmim_find to disconnect and exit when there is an

      error.

. Enhanced the 'lock_files' failure message to give information

   about the server owner.  Also, give a reason code for failure.

. Added improved server_wrapper::loop() logic back in

   so that we can call kill_expired_slaves() in the loop.

   Also, got rid of the 1024 file limit.

. Better error message for the 'SchSchemaSingle::setupRelcol failed'

   message.

. Removed the Sort system call which fixed Corrections

. Removed need for oncrpc.lib and oncrpc.dll.  oncrpc support

   is now built into xmim4.dll and xmim4.lib.  This reduces confusion

   with DLL's at customer sites.

. Added new argument to the XmimVaFindRelations() function "XMIM_INCLUDE_HIDDEN". 

   This allows a programmer to find ".Internal" relations when set to true. 

   By default it is false, the ".Interal" relations are excluded

   from the results.

. Added bmim command entitlements_write_all.

. When translating secondly data to minutely data,

   facts_read could not read the intraday data (with TICK_CONVERT)

   with timestamp at a boundary containing seconds.

   Example:  23:59:05 was translated to 24:00 (not understood).

   Now it is translated to 00:00.

MIMDBCP:

. Added switch to MIMDBCP utility to only copy the futures contracts

   and not the continuous contracts.  After copying the futures contracts,

   the regen_continuous function is called to generate the continuous

   contracts.

. mimdbcp need to default to original behavior without requiring .cfg file.

   Set default for contracts-only? to false.

. Fixed a bug that caused mimdbcp to crash when both verbose and

   start date were not set.

   Changed the algorithm to not copy continuous data, instead

   XmimRegenRollover is called on each relation that has continuous children.

. Added the from_date example to the config file.

DATABASE SCHEMA STABILITY:

. Gracefully handle the error where you have a partial-write that was interrupted,

   but now can't be completed due to an error.  Abandon the completion of the

   partial-write and continue on to the newly-requested write processes.

   (Previously, the partial-write continued in places where it shouldn't,

    potentially damaging the database schema file).

   (also fixed in 4.4.23)

. Closed up a hole that was allowing hash-tables to write out past their curSize.

   Fixed infinite loop.  Also, made hash-tables generally bigger for new databases,

   especially the relcol_property tables.

. Fixing problem found where loading an mjk package causes

   "Can not read time series from disk" error.  Here are the fixes:

   a) Relation name was incorrect or often missing in the

      'Unable to Read the Time Series %s from disk' error message.

      Also, added the column name to the message.

   b) Fixed bad place when reading timeseries where offset got off by 4 bytes.

 

 

 


www.lim.com