================================= RELEASE NOTES FOR INFORMIX TIMESERIES DATABLADE MODULE 3.20.UC3 DATE: 1/11/99 ================================= TABLE OF CONTENTS I. OVERVIEW OF RELEASE NOTES II. INFORMIX SERVER COMPATIBILITY III. UPGRADING A DATABASE FROM A PREVIOUS VERSION IV. REGISTERING THE INFORMIX TIMESERIES DATABLADE MODULE V. INSTALLING EXAMPLE FILES VI. NEW FEATURES VII. RESTRICTIONS FOR THE TIMESERIES DATA TYPE VIII. PERFORMANCE IX. GLS SUPPORT X. PROBLEMS FIXED IN THIS RELEASE XI. KNOWN PROBLEMS +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ I. OVERVIEW OF RELEASE NOTES ============================= The purpose of these release notes is to make you aware of any special actions required to configure and use the Informix TimeSeries DataBlade module on your computer. This file also describes new features and feature differences from earlier versions of this product and other Informix products and how these differences affect current products. In addition, this file contains information about known bugs and their workarounds. This release notes document is not intended to be all-inclusive; it should be used as an addendum to the "Informix TimeSeries DataBlade Module User's Guide," which provides thorough information about product features and behavior. These release notes are written for the following audience: o System administrators who install the Informix TimeSeries DataBlade module o Database administrators who control access to databases that use the Informix TimeSeries DataBlade module o Developers who write applications using the Informix TimeSeries DataBlade module II. INFORMIX SERVER COMPATIBILITY ================================== Version 3.20.UC3 of the Informix TimeSeries DataBlade module has been verified on Informix Dynamic Server with Universal Data Option Version 9.14. Version 3.20.UC3 is not compatible with Informix Dynamic Server with Universal Data Option Version 9.20. III. UPGRADING A DATABASE FROM A PREVIOUS VERSION ================================================== Informix recommends you back up your databases before you upgrade them. To upgrade from Version 3.20.UC2, or any version later than the Beta Version 3.10.UC1B6X1, use BladeManager Version 3.60.UC1 to register this release of the TimeSeries DataBlade module. (3.10.UC1B6X1 is an earlier version than 3.10.UC1.) To upgrade a database from Version 3.10.UC1B6X2 or earlier, contact Informix for assistance. Once a database has been upgraded to be compatible with the 9.20 server, it cannot be converted back to be compatible with the 9.14 server. IV. REGISTERING THE INFORMIX TIMESERIES DATABLADE MODULE ========================================================= To use the Informix TimeSeries DataBlade module, you must register it in each database in which it will be used. See the "DataBlade Module Installation and Registration Guide" (formerly known as the "BladeManager User's Guide") for instructions on how to register DataBlade modules. V. INSTALLING EXAMPLE FILES ============================ This product includes a script that populates your database with tables and sample time series data for each data type defined in the Informix TimeSeries DataBlade module. You can use the sample query files located in the $INFORMIXDIR/extend/TimeSeries.3.20.UC3/examples directory to perform queries on the sample tables and data. To install the sample database schema, enter the following command from the $INFORMIXDIR/extend/TimeSeries.3.20.UC3/examples directory: make -f Makefile MY_DATABASE= In this command, is the name of your database. VI. NEW FEATURES ================= Version 3.20.UC3 of the Informix TimeSeries DataBlade module has the following new features: o Improved performance of the Apply function o Enhancement of the SetContainerName function o Improved handling of large time series' transition to a container o Enhancement to the update statistics command's effect on virtual tables o Improved performance in opening in-container time series o Enhancement to the Clip and Clipcount functions when you clip to create an irregular time series A. PERFORMANCE OF THE APPLY FUNCTION ------------------------------------- The performance of Apply has been improved when the SQL expression is more complex than a simple projection or function call or when the filter expression is more complex than a simple function call. B. THE SETCONTAINERNAME FUNCTION ---------------------------------- The SQL function SetContainerName may now be applied to any time series that is not yet stored in a container, even if the time series has a container name. Previously, you were not allowed to invoke the SetContainerName function on time series with a non-null container name. C. LARGE TIME SERIES' TRANSITION TO CONTAINERS ----------------------------------------------- A time series is put in a container when it is too large (as a number of bytes) to fit in row. This is now done even if the number of elements has not reached the time series' threshold attribute. Previously, an error was raised if a time series grew too large to fit in row before exceeding its threshold number of elements. D. UPDATE STATISTICS AND VIRTUAL TABLES ---------------------------------------- The functionality of the update statistics command on TimeSeries virtual tables has been improved. Performance has been improved in some cases, and the page count estimate is more accurate. E. PERFORMANCE OPENING IN-CONTAINER TIME SERIES ------------------------------------------------ Opening in-container time series is now somewhat faster. This is most likely noticeable on operations like GetNthElem and GetElem that get a single element from a time series. F. CLIP AND CLIPCOUNT FUNCTIONS -------------------------------- Another bit has been defined in the flags argument of the Clip and Clipcount functions to force the result to be an irregular time series. If you set the 8 bit on in the flags argument of the Clip or Clipcount function, the resulting time series is irregular. For example, Clip(ts, start, end, 8) extracts all visible elements from the input between start and end and creates an irregular time series, even if the input is regular. This new flag value works in conjunction with the previously existing values. For example, Clip(ts, start, end, 8+2) extracts all elements, both hidden and visible, between start and end and creates an irregular time series. Because regular and irregular time series cannot be placed in the same container, you must use this feature in conjunction with the SetContainerName function if the result is to be stored in the database, as in the following example: SetContainerName(Clip(ts, start, end, 8), "irreg_cont") VII. RESTRICTIONS FOR THE TIMESERIES DATA TYPE =============================================== Since the TimeSeries data type is constructed from a row type, the current server restrictions on which data types can be included in a row type apply. Row types cannot contain: o SERIAL and SERIAL8 types. o types that have Assign or Destroy functions assigned to them, including some user-defined types and some large object types. VIII. PERFORMANCE ================== After you load data into a TimeSeries column, run the following command: update statistics for table tsinstancetable; This improves performance for any subsequent load, insert, and delete operations. IX. GLS SUPPORT ================ This section describes the support for GLS that the Informix TimeSeries DataBlade module Version 3.20.UC3 provides. A. CHARACTER I/O ----------------- Character I/O is not GLS compliant. This affects: o conversions between time series and character strings. o use of the bulkload function. B. MULTIBYTE CHARACTERS ------------------------ The following character strings can contain multibyte characters: o Calendar names o Calendar pattern names o Container names o Table names o Column names o Character fields inside a time series C. DATETIME AND NUMBER INPUT ----------------------------- Datetime and number input is not GLS compliant. You must use the default (U.S.) format for datetime and number input: "%Y-%m-%d %H:%M:%S:%F5" (See the "Informix Guide to GLS Functionality" for more information.) If you are not in the default locale, set the GL_DATETIME environment variable to the U.S. locale to avoid confusion and conflicting datetime interpretations in other parts of the server or other DataBlade modules. D. FLOATING-POINT INPUT ------------------------ Floating-point input uses the default (U.S.) format: o An ASCII period '.' is the decimal separator. o The ASCII plus and minus signs '+' and '-' are used. This is not affected by the locale or by the DBMONEY environment variable. E. DECIMAL NUMBER AND MONEY INPUT ----------------------------------- Decimal number and money input is largely GLS compliant. However, plus and minus signs must be the ASCII '+' and '-'. F. ERROR MESSAGES ------------------ Error messages can be fully localized. X. PROBLEMS FIXED IN THIS RELEASE ================================== This section describes the problems that have been fixed in this release. o Bug 102050 If the server crashes after the first time series is stored in a container but before a checkpoint is taken, recovery no longer fails when the server is brought up. For example, the bug previously occurred in the following situation: 1. tscontainercreate( 'cont',...) 2. insert into t values('calendar(c),container(cont),threshold(0)'); 3. Server crash o Bug 102049 The update statistics command now succeeds on TimeSeries virtual tables if the underlying table has a mixture of in-row and in- container time series. o Bug 102241 The Apply, Intersect, and Union SQL functions now detect input errors such as type mismatches between input and output. o Large in-memory time series When an in-memory time series was larger than 64KB, the series was sometimes truncated. The precise sizes of the elements determined whether the bug occurred. Large in-memory time series are produced by client programs or by TimeSeries DataBlade module routines. Large time series are stored in-container in the database. In-container time series are not affected by this bug. o Calendar updates A trigger was improved to prevent updating a calendar referenced by a time series. o TimeSeries parsing The TimeSeries input parser was made more robust in its handling of syntax errors in the parameters. Some errors previously caused the parser to fail or hang. o Virtual Table Interface (VTI) Selections from a VTI table used to fail if the WHERE clause contained a condition like "timestamp < t1" or "timestamp between t0 and t1" and t1 was before the origin of one of the selected time series. o The PutElem function used to cause assertion failure files to be created. The message in the file for this error was "Generic Page API(genpg_bfrelease) - Stored buffer not found!". The element was successfully put into the time series despite the assertion failure. o The TSContainerCreate function used to fail if the subtype argument was null. XI. KNOWN PROBLEMS =================== The following bugs are known to be present in this release of the Informix TimeSeries DataBlade module. o Bug 95024 affects the onpload and onload utilities. Do not use onpload or onload with TimeSeries data, except for loading nonsystem individual tables. DO NOT use onpload or onload with the TSContainerTable table. o Bugs 94284 and 94427, affecting the dbimport utility, and Bug 94515, affecting the onload utility, cause the error: UTSFZ "Cannot open container %NAME%. It or the container table are corrupt." DO NOT use dbimport or onload with TimeSeries data. --------------------------------------------------------------- Workaround for bugs 95024, 94284, 94515, and 94427. Use the ontape utility for backing up tables containing TimeSeries data. You can use the SQL load and unload commands for importing or exporting data. --------------------------------------------------------------- o Bug 88940 The TimeSeries DataBlade module does not correctly handle quotes inside calendar, pattern, or container names. If you enter one of these names with an embedded quote, an error is raised. The following DB Access session log provides an example: > insert into CalendarTable(c_name, c_calendar) > values ('junk''cal', > 'startdate(1994-01-01 00:00:00.00000), pattstart(1994-01-01 00:00:00.00000),pattern({1 on}, day)'); (UTSCV) - Invalid character in name: "junk'cal". Error in line 3 Near character position 96 o Bug 80834 If you add a time series element with a collection of about 1200 bytes or more, the data can no longer be retrieved. You get the error message "9875: Bad internal structure for collection data: unknown flag value" when displaying the element with the large collection. Do not attempt to use large collections. o Bug 76801 If you create a time series on a row type, delete that row type, re- create the row type (using the same name), and then attempt to create another time series on that row type, the creation can fail with the error message "7438: Unsupported data type." To work around this problem, restart the server after you drop the row type.