Home

PowerForce

Introduction

This document is from a posting on the Rev web site replying to my enquiry on creating a DB extent.

 

Getting There:

[ SC ] –> Modules / Module Options

Section

There is an art to having an efficient data base. Some seem to miss the most important.

1) I have my Virtual Memory, paging file, on a separate physical drive than the data base. And I do not have it on a mirrored volume.

Having your data base on a mirrored drive will slow it down considerably. Although you should consider this option very carefully before you do it.

2) I have my processor scheduling set for "programs", and the memory usage set for "system cache".

3) I program my indexing to be very efficient. I also have my selects programmed efficiently.

4) When you consider manually setting the table configuration, be sure to test it and see if you get the desired results. Most of the time, it is index updating and selecting that is the problem. Unless your tables are horribly over sized.

5) Try to not to make your selects go through the entire table when selecting. Use indexes when possible. And too many indexes is even worse! Basically what you need to do is to gather up all your selects and see what common criteria you have in them, and how often they are used. That is how to determine what indexes to have and not have.

I did some very serious testing before I released my product. I found that I was able to speed up about 600% just by making my selects and indexing more efficient. Programming techniques are a part also. I do not have performance issues.

There are so many ways to tune up your data base. Without knowing what your data base does, it is very hard to know how to respond to you.

You really need to be a software developer, designer, and tune up (doctor) expert to get or have a very efficient system.

Your problem could be something very simple, something like how your users access the server and the data base.

Remember that data transferred from memory (cached) is the quickest. Data transferred from physical disk is second quickest. Data transferred via network is way slower. And data transferred via the internet is the slowest.

If your data base total size is like two gigs or so, then you might consider more memory so that, if you choose, you can have more caching.

Windows server 2008 has a program called "perfmon". Set it up to monitor the "fast reads, cache (reads per second)", network activity (bytes per second), paging file (% usage), each physical disk (% disk time), each CPU (% processor time). This might help you see what needs to be looked at.

My opinion... Windows defragging does not help! It might save you one or two seconds a day. Using the OpenInsight "compress" utility does not help! Compressing only removes unused overflow frames. The unused overflow frames are queued to be used again when needed.

 

Top of Page

Storing data in-memory

RPT65

 

Top of Page

Release 9.x functionality

  • A new function named RTI_OS_DIRECTORY has been created. It supports methods such as Create, Delete, Rename and other methods for dealing with OS directories.
  • A new type of indexing has been added – Bitmap Indexing. Bitmap indexes
    have nothing to do with images, but rather with bit arrays (the 'bit map'). We
    do the work internally with bitwise operators. They are mostly used for
    indexes where the number of indexed values are relatively small; e.g. Sex
    (M, F), Active(Yes, No), etc. Basically, there is one index node per index
    value, as opposed to our Btree or Xref indexes, which could have many
    nodes per value, or multiple values in a node.
    • Some issues with IDX_SETS have been corrected; IDX_SETS now runs
    faster.
  • A new function named OI_GET_LOCALE_DATE is now available. It will
    display a passed date in the format as determined by either LND setting in
    the database manager, or by the Windows Local settings.

  • • A number of binary operators, used to work in terms of BYTES rather than
    CHARACTERS have been added to the Basic+ language. These include
    GetBinaryValue, PutBinaryValue,GetBtyteSize,CreateBinaryData, BCol2,
    BRemove, and more. Please see the What's New in 9.2 guide.
  • Added drop downs and scroll bar to the Popup window.
  • A program named RTI_TASKMANAGER has been added to the system,
    allowing developers to schedule processes through the Windows Operating
    System.
  • OpenInsight now supports Single Sign-on using LDAP. Single Sign-On (SSO) allows OpenInsight users and system administrator to
    simplify their OI security and administrative tasks. By configuring SSO,
    OpenInsight users can be authenticated via traditional OpenInsight methods,
    via Windows security, or via a combination of both.
  • IDX_SETS
    An error in IDX_SETS has been fixed. Under certain circumstances, especially in
    the CTO and AREV32 environments, IDX_SETS performance was seriously
    degraded. A new version of IDX_SETS has been written using .NET libraries,
    instead of the original C and Assembler routines.
    The default behavior of IDX_SETS will be to use the original Assembler/C routines.
    To use the .NET libraries, the ClientSetup.exe needs to be run on each
    workstation. This will install the idxSets_Setup.msi that was placed in
    OpenInsight's root directory during the upgrade. The idxSets_Setup.msi will install
    the .Net libraries needed to execute IDX_SETS.
    There is a new record in the SYSENV table called CFG_IDX_SETS. This record,
    as shipped, contains the value "IDX_SETS1" in field 1. When IDX_SETS is
    invoked, the system will interrogate the CFG_IDX_SETS record to determine
    which version of IDX_SETS should be used. If the value of the record is
    "IDX_SETS1" the original Assembly/C interface is used. If the value of the record
    is "IDX_SETS2", then the .NET library is used.
  • RTI_Getnetworkusername
  • Added REVDOTNET API to allow OpenInsight to integrate with .NET
    controls.
  • Added DOTNETEXPLORER window to explore .NET controls.
    • Added RTI_TASK_SCHEDULER as an OI front end to the Windows control
    panel scheduled tasks. ( SCHTASKS.EXE )
    • Added RTI_INDEXER_CONFIG as a front end to schedule indexing utilizing
    the RTI_TASK_SCHEDULER and the Engine Server.
    • Added OERUN.exe for use with the RTI_TASK_SCHEDULER. It is intended
    to be called from the windows task scheduler, but can be called from batch
    files too.
    • Added RTI_CDOMAIL to send email from OpenInsight using authenticated
    login and or SSL.
    • Added RTI_SENDFAX to provide the ability to send a fax from OpenInsight
    using the standard Windows Fax Server (included in XP, Vista, Server 2003
    and Server 2008).
    • Added RTI_CreateGUID to generate a GUID. This provides a way to get
    unique keys without using locking.
    • Added RTI_MD5 to enable one-way MD5 hashes. This can let you validate
    passwords, credit cards or SSN without storing them.
    • Added RTI_JSON to allow you to generate JSON formatted data. This is
    useful for custom web programming using AJAX techniques
    • Added RTI_RSS as an example of reading RSS feeds in JSON format
    • Added RTI_GETNETWORKUSERNAME to get the network user
    • Enhanced XML Import Wizard to import of XML without a schema. Replaced
    in-house parser with use of MSXML parsers. Provided underlying RTI_XML
    object.
    • Some of the new IDE screen handling has been updated.
    • Fixed issue where Collect.IXVals response was limited to 64k.
    • Fixed issue where SYSENV*SYSPROCNAMES was being deployed empty.
    • Fixed a bug in LH_VERIFY_SUB that incorrectly calculated the average row
    size.
  • Added new 'Code Templates'. These are prebuilt chunks of code stored in
    the SYSCODETEMPLATES table. Revelation ships some examples;
    developers can extend them as needed.
    • The Basic+ commands for working with .Net assemblies have been modified.
    These include STARTDOTNET, SET_PROPERTY.NET,
    GET_PROPERTY.NET, GET_INFO.NET, EVENTS.NET,
    SEND_MESSAGE.NET, CREATE_CLASS.NET, FREE_CLASS.NET,
    CREATEINTERNALOBJECT.NET, and PARSEDOTNET.
    • A new series of Rlist Callback routines have been created or modified. These
    include RLIST_XML_CALLBACK, RLIST_JSON_CALLBACK,
    RLIST_CSV_CALLBACK, RLIST_TEXT_CALLBACK,
    RLIST_TAB_CALLBACK, RLIST_HTML_CALLBACK, and
    RLIST_EDT_CALLBACK.
  • Form Designer/Presentation Manager
    • The ComboBox Populator has been enhanced to support a SORTBY: tag,
    allowing an AL/AR/DL/DR sort. Also, additional literal items can be added to
    the list, and they will appear at the top of the dropdown.
    • A new set of FocusCell properties has been added. Details are:
    FOCUSCELLFONT, where a specific font can be set for the cell that has
    focus; FOCUSCELLCOLOR, where colors can be set for the foreground and
    background color for the cell that has focus, for EditTables where row
    selection is or is not set; FOCUSRECTWEIGHT, where the thickness of the
    rectangle surrounding the EditTable cell that has focus can be set to light,
    medium, or thick; FOCUSRECTSTYLE, where the rectangle surrounding the
    EditTable cell that has focus can be either a solid or dashed line; and
    FOCUSRECTCOLOR, where the color of this rectangle can be specified.
    • Menus have been modified to support graphics and textual separators. The
    contextmenu designer and menu designer have been modified as required.
    • Sample screens have been added to the build to show examples of using a
    number of features in OpenInsight. They include TEST_EDITTABLE_DND
    for testing EditTable drag and drop; TEST_CONTEXTMENU for testing
    context menus; TEST_NEW_ET_STYLES, for testing the new EditTable
    styles included in OpenInsight 9.0; TEST_EDITTABLE_DROPDOWN and
    TEST_EDITTABLE_CHECKBOX for testing EditTable dropdown lists and
    checkboxes.
    • The QBF Query parsing Logic has been revamped. In prior versions, QBF
    was not using the same WITH clause logic that RLIST uses. QBF now uses
    the same META parser that Rlist uses. Range selects are now supported, for
    example A...Z will find items from Aardvark to Zebra
    • The maximum number of controls supported in a form has been increased
    from 920 to 2048. This will be the maximum number of controls in a form.
  • Commuter Module Generator (RTI_Commuter window)
    • Some issues with all events not being converted have been addressed.
    • Clicking on the 'All Controls/Supported Events on the Form' checkbox now
    gives a warning about how many program stubs will be created.
  • The IDE can be launched manually through the System Monitor by typing
    "EXEC RTI_IDE_MDI"
    • The IDE can be launched automatically through a new IDE command line
    switch on your Windows Shortcut. The switch takes the form: \IDE=<FIELD
    POS>. When launching OpenInsight the SWAP_DATABASE command
    reads the CFG_IDE record in the SYSENV table. It will use the field position
    specified in the <FIELD_POS> value of the IDE command line switch. The
    CFG_IDE record has a default of RTI_IDE_MDI. Therefore if one specifies
    \IDE=1 on the command line when launching OpenInsight, then the new IDE
    will be displayed. The CFG_IDE record is available for use by developers. If
    one specifies \IDE=2, the system will look at the second field in the CFG_IDE
    record and launch the appropriate window. The system expects to launch a
    window.
  • Basic+
    • Edit Table Functionality. There have been numerous enhancements to the
    Edit Table control for OpenInsight 9.0. These include: Multiline Cells,
    Combo Box and Check Box processing for individual cells, rows and
    columns.
    New Messages for the Send_Message function for manipulating an edit table
    have been added. These include:
    STYLE_BY_POS - Set and retrieve the Style for an entire column, row or
    particular cell
    Setting the STYLE_BY_POS: retval = Send_Message(CtrlEntId,
    "STYLE_BY_POS", column, row, style)
    Retrieving the STYLE_BY_POS: retval = Send_Message(CtrlEntId,
    "STYLE_BY_POS", column, row)
    Please review the Programmer's Reference Manual, STYLE_BY_POS
    message for examples on how to use the new styles.
    • New Styles in that have been added are:
    OPTIONSBUTTON (will create a button within edit table cells. When the
    button is clicked the table's OPTIONS event is raised.)
    DROPDOWNEDIT (will create a drop down type of Combo Box within edit
    table cells.)
    • The CLEAR_TABLE command has been modified to that if there are indexes
    on the file, they are rebuilt.
  • A Window (SYSCOPYAPPS) has been added to copy entities or applications
    to a different application.
  • WebOI
    • A new Web Publishing tool named WebOI has been created. It can be
    accessed by typing Exec WebOI from the system monitor.
    • The WebOI screen's 'Tools' tab has a Commuter Module Generator. See the
    WebOI Quick start for details.
  • The RTI_POPULATE_COMBO stored procedure
  • OCX/OLE
    • An error in handling keystrokes in OLE controls has been remedied. The
    NOACCELTRANSLATION property has been added, as well as, the
    SUPPRESSKEYTRANSLATE message. The NOACCELTRANSLATION
    property is a boolean property that may need to be set when the keys used
    within the OCX should not be passed to the OpenInsight Presentation
    Server. This fixes the issue where the RichTx32.ocx embedded in
    OpenInsight forms loses the ability to use navigational keys (arrows, page
    up, page down, home, etc., etc., etc.) within the ocx. Using the following
    Set_Property command will ensure that the keystrokes within the OCX
    control process properly:
    call Set_Property( oleControl, "NOACCELTRANSLATION", TRUE$).
    • The SUPPRESSKEYTRANSLATE message provides
    NOACCELTRANSLATION functionality for specific keys. This message is
    used in the Send_Message routine as follows:
    equ VK_BACK$ to 8
    call Send_Message( oleControl, "SUPPRESSKEYTRANSLATE",
    VK_BACK$, TRUE$)
    This example will stop the BACKSPACE key from being processed by the
    OpenInsight Presentation Server but all other keys will be processed by
    OpenInsight.
    • The FORCEKEYDISPATCH message will force the OpenInsight
    Presentation Server to handle an individual keystroke regardless of the OCX
    translation. It has the same syntax as the SUPPRESSKEYTRANSLATE
    message: Send_Message(controlName, Message, keystroke, boolean). This
    message is used as follows:
    equ VK_RETURN$ to 13
    call Send_Message( oleControl, "FORCEKEYDISPATCH",
    VK_RETURN$, TRUE$)
    This example will force the Presentation Server to handle the ENTER key, as
    well as the OCX.
  • Added Utility to remove style sheets from individual forms in routine
    RTI_REMOVE_STYLE_SHEET.
  • • Added a new Equates RTI_STYLE_EQUATES as a more comprehensive update to the antiquated
    STYLE_EQUATES.
    • Fixed issue where RTI_LOCK_OWNER program was missing.
    • The maximum number of indexed fields that can be searched with the INDEXLOOKUP command was
    increased from 16 to 24.
    • The Copy-Row command has been modified to accept a seventh parameter, a Boolean indicating whether
    the source rows should be deleted after the copy.
    • Updated User32.dll Functions from the Sprezzatura Windows API Library. This library can be downloaded
    from the following link on Sprezzatura's website:
    o http://sprezzblog.blogspot.com/2010/06/sprezzatura-windows-api-library.html
    • RTI_DISTINCTLIST - Pass in a set of information, get back a distinct set. Relies on RTI_SETS, which relies
    on the client install.
    o Usage:
    distinctList = RTI_DistinctList("A A A B B A B C D A B", " ")
    • RTI_STRINGBUILDER - A wrapper for [] based string manipulation. Loosely mimics .Net stringbuilder
    o Usage:
    sb = ''
    orig_mediaIDs = ''
    rti_StringBuilder(sb, 'New')
    Done = false$
    Select hMedia
    Loop
    Readnext id Else done = True$
    Until done
    rti_StringBuilder(sb, 'Append', id:@vm)
    Repeat
    rti_StringBuilder(sb, 'ToString', orig_mediaIDs, True$ )
    rti_StringBuilder(sb, 'Destroy')
    • RTI_HASHTABLE2 - Rewritten in Javascript instead of .Net hashtable. Better implementation of Keys
    method. In memory hashtable. Useful full for caching information used by one engine. Useful for caching
    <idispatch> objects
    • RTI_MEMCACHED – New function. A sandbox implementation of memcached hashtable service. Useful for
    sharing information across instances of OpenInsight without writing to disk, for example for caching
    intermediate results in a large OECGI3 installation. See
    http://code.google.com/p/memcached/wiki/MemcacheBinaryProtocol
    • RTI_DIFF – New function. A diff engine for comparing two strings. See
    http://snowtide.com/files/media/jsdifflib/difflib.js
    • RTI_CRYPTO - New function that is a wrapper for RTI_MD5, RTI_SHA1. It implements Cryptographic
    functions from http://pajhome.org.uk/crypt/md5/index.html
    o Read that site to see the code and examples of usage. The scripts are implemented verbatim OI
    without change and without need to access external web server.
    o Usage:
    RTI_Crypto(method, param1,param2,param3)
    ans = RTI_Crypto( 'hex_md5', string )
    ans = RTI_Crypto( 'b64_md5', string )
    ans = RTI_Crypto( 'str_md5', string )
    ans = RTI_Crypto( 'hex_hmac_md5', key, data )
    ans = RTI_Crypto( 'b64_hmac_md5', key, data )
    ans = RTI_Crypto( 'str_hmac_md5', key, data )
    ans = RTI_Crypto( 'hex_sha1', string )
    ans = RTI_Crypto( 'b64_sha1', string )
    ans = RTI_Crypto( 'str_sha1', string )
    ans = RTI_Crypto( 'any_sha1', s, e )
    ans = RTI_Crypto( 'hex_hmac_sha1', key, data )
    ans = RTI_Crypto( 'b64_hmac_sha1', key, data )
    ans = RTI_Crypto( 'any_hmac_sha1', key, data, e)
    ans = RTI_Crypto( 'str_hmac_sha1', key, data )
    • RTI_JSON - Improved functionality / stability. Many thanks to Jensen Thomassen for his input on this.
    • RTI_CREATEGUID - added outFormat parameter – rti_CreateGuid("{") returns the GUID in string format:
    {C8383395-0000-B7BE-0000-45C7918EF371}
    • RTI_SET_DEBUGGER - Can now toggle debugging on fly, so can debug a CTO session or Arev32 session
    using OI debugger.
    o Usage:
    Call RTI_SetDebugger(0, '') mode=0 to disable.
    Call RTI_SetDebugger(1, '') to break.
    Call RTI_SetDebugger(2, procedureName) to intercept using the specified procedure.
    • RTI_LOAD_DATABASE - Can Load a different DBT programmatically.
    o Usage:
    Call RTI_Load_Database("MYDB") to load MYDB.DBT
    • DSBFS_GET_IDENTITY - Can obtain the key created after an inserting a row into a table with an identity key
    • Added 'UTF8' to the 'SYSTEM' property. This setting will maintain allows application level enforcement of
    UTF8 mode, outside of the existing SETUTF8 function.
    • Fixed bug in FIX_LH where setting a sizelock value would cause a VNAV error.
    • Fixed issue with the Dir function where size values were returned as negative when the filesize was between
    2 and 4 GB.
  • Form Designer
    • The ability to load previous values into controls within a window has been introduced in OpenInsight. A new
    function OIWin_FormLoadPrev( windowName, controlName) should be called for the ALT-C/ALT-O type
    processing. This equates to the AREV functionality of :
    o The "Ditto" prompt default. See the Form Designer Property window for details.
    o The "Alt-C" softkey that duplicates the most recently saved form data into the form's controls (All
    non-key controls are updated)
    o The "Alt-O" softkey that duplicates the most recent saved form data into the form's controls (only a
    single control is updated)
  • Delete_table command will now remove the bang table from the database.
    • Get_env now returns values above 53.
    • Fixed issue where any popup would not return any value if last popup had a system error.
    • Added new Basic program (RTI_REMOVE_INDEX) to remove all indexes from a table including
    deleting the bang table and SI.MFS.
    • New Extended Math Operators have been added. The _addx, _subx, _mulx and _divx functions
    perform math operations using full precicsion or a specified precsion. These functions are intrinsic
    and do not need to be declared.
  • Data Encryption
    • OI 9.3 includes a module to encrypt your data. The major pieces are an encryption server ,
    rtiDERServer, an encryption client, rtiDERClient and a bfs, RTP57E. Encryption works in conjunction
    with the Linear hash filing system. When you use DER the linear hash service just stores encrypted
    keys and rows rather than plaintext. Data Encryption is mostly transparent. Once you install the
    server and client, you create an encrypted volume and copy tables to that volume. Tables and
    indexes function normally, but if you look at the .LK or .OV files with a text editor you will see
    encrypted data.
    • Added new functionality to create "encrypted" volumes
    • Updated CREATE_TABLE, COPY_TABLE to support creation and copy of tables in encrypted
    volumes
    • Added CREATE_VOLUME_PASS, ATTACH_TABLE_PASS to create and attach PASS (Password
    Authenticated Single Session) volumes
    Banded Report Writer
    • Entirely new Banded Report Writer, using industry-standard UI
    • RTI_BRW_FILTER provided so that system administrators and developers can customize which
    tables and fields are available for the BRW
    • RTI_BRW_GenerateReport (reportFile, reportName, outputName, reportType,
    OverRideList,bUseGUI) stored procedure provided to generate BRW output
    • O4W_BRWReport routine provided to generate BRW output from O4W
    • OIPI.Net call "LOADREPORT" added to allow for inclusion of BRW output in OIPI (note: only
    available via SET_PRINTER2 or with VSPRINTER2 specified in configuration file)
  • NOTE: The name of the Report builder has changed. If a system is currently launching the Report
    Builder by starting the ORMAIN_32 window, any references to this must be changes to
    ORMAIN_32_MDI.
  • DOTNETEXPLORER4
    • NET 4.0 version of the DotNetExplorer form is now included; exec the DotNetExplorer4 window
    (instead of DotNetExplorer for .NET 2.0)
    RevDotNet
    • StartDotNet({existingObject},{version}): StartDotNet now supports an optional second parameter.
    Leave blank or pass in "2.0" to use .NET 2.0 assemblies, or pass in "4.0" to use .NET 4.0 assemblies
    Utility_DotNet
    • For each supported command (RUNWIN, CHECKWIN, GETWINHNDL, KILLWIN, MAKEDIR,
    REMOVEDIR, ZIP, UNZIP, TIMEZONE, and SHUTDOWN) there is now a corresponding .NET 4.0
    command (RUNWIN4, CHECKWIN4, GETWINHNDL4, KILLWIN4, MAKEDIR4, REMOVEDIR4, ZIP4,
    UNZIP4, TIMEZONE4, and SHUTDOWN4) which will use the .NET 4.0 framework instead of the
    default .NET 2.0 framework
    NetOI
    • Revelation Software now provides two different assemblies to support both .NET 2.0 and .NET 4.0
    framework projects. Include the RevelationDotNet.dll assembly when targeting .NET 2.0 framework,
    and RevelationDotNet4.dll assembly when targeting .NET 4.0. The namespace when using the .NET
    2.0 version will be Revelation; the namespace for .NET 4.0 will be Revelation4.
  • Banded report Writer
     Fixed handling of multipart keys
     Can now omit report name in call to BRW_GENERATEREPORT and default report in group will be used
     Can now omit report name in call to SET_PRINTER2 "LOADREPORT" and default report in group will be
    used
     Added "DEFAULT" action to RTI_BRWSUPPORT to return name of default report in group
     RTI_BRW_GENERATEREPORT can now be run with 'shared' oengine mode
     Fixed failure in RTI_BRW_GENERATEREPORT to terminate NetOI connection after report generation
     Changed behavior of "exploded" subreports - if single-valued fields are on the subreport, they will always return
    the first value (and not the specified exploded subvalue)
     Provided the ability to include XLATE's
  • Added array_utility.net to allow for array manipulation
     Enhanced create_class to "fall back" to non-visible object creation if visible flag is set but no parent property
    found in object
     Enhanced create_class to support creation of basic .NET types (ie, System.String, System.Int32, etc.) as objects
    General Fixes
     An issue with the DUMP and TEMP table creation failure when they already exist during an LHREPAIR
    function has been corrected.
     RTI_CDOMail: added new parameter "OtherOptions" to support priority, read receipt requests
    Usage
    * OtherOptions is associated mv list of optionNames and OptionValues
    optionNames = ''
    optionValues = ''
    optionNames<1,1> = 'Priority'
    optionValues<1,1> = 'High' ; * Can be alpha 'High', 'Low', or 'Normal' or numeric 1, -1, or 0. default is
    0, Normal
    optionNames<1,2> = 'Receipt'
    optionValues<1,3> = 'reply-to@myserver.com' ; * Email address for read receipt
    otheroptions = optionNames:@fm:optionValues
    call rti_CDOMail(mailservername, sendername, recipient, subject, body,cc, bcc, replyto, content,
    attachmentfilelist, Username, Password, useSSL, otherOptions)
     RTI_LOAD_DATABASE: added new parameter "bUseAppIdforDBid".
    for example, in an application named MYAPP
    call RTI_LOAD_DATABASE(MYDBT)
    will load the files in MYDBT.dbt and set @DBID to"MYDBT"
    call RTI_LOAD_DATABASE(MYDBT, 1)
    will load the files in MYDBT.Dbt and set @DBID to"MYAPP"
    This should allow developers to create context-specific dbt files and attach them using
    RTI_LOAD_DATABASE without changing @DBID
     REV_BGND_UPDATE: fixed a bug which could cause a background indexer to hang upon encountering a
    corrupt indexing file.
     RTI_OEMONITOR_INDEX: Set_Status(0) before and after each index update call.
     IDX_SETS: Changed default behavior to use IDX_SETS2. Issued a CFG_IDX_SETS record to force
    IDX_SETS2. . Also modified REDUCE, RLIST, BTREE.UTIL, INDEX.REDUCER to trigger an error if
    IDX_SETS fails.
     RTI_DOCEX_MERGE: Changed to _not_ return mysterious, auto-added "_GoBack" bookmark
     RTI_WNETGETUNIVERSALNAME - stopped throwing an error when examining a non-network drive.
    Background: RTI_WNETGETUNIVERSALNAME(mypath) returns the UNC for the provided path. It was added to RTP49 / Attach table in 9.3 reduce problems when people attach the same unc with different mapped paths. The spurios message could cause BFS attach problems at application startup.
     ATTACH_TABLE fixed to attach the bitmap index table upon attaching the data table
     INET_PDF_EXAMPLE, a sample program showing a non-o4w way to launch a reports and return a PDF to the browser
  • Provided sample programs TEST_MVBFS_SUBCALL, TEST_TGBFS_SUBCALL,
    TEST_U2UBFS_SUBCALL how to make command and subroutines to the back end server from the OI client.
     DSBFS_EXEC_SQL is enhanced to call parameterized stored procdures, return values. Provided sample
    program TEST_DSBFS_EXEC_SQL showing how to use the program to execute custom SQL statements.
     RTI_MEMBFS, a proof-of-concept in-memory filing system. RTI_MEMBFS creates in-memory tables. Tables and dictionaries are not shared between oengines and disappear when the volume is detached or the Oengine closes. Useful for creating temporary reporting tables or caching the contents of popups and dropdowns. The program TEST_RTI_MEMBFS illustrates usage. Note that TEST_RTI_MEMBFS shows how to implement a SYSLISTS table in memory too.
     RTI_CACHE_MFS, a proof-of-concept caching MFS that keeps records in memory for 10 minutes or until a lock or select occurs. The goal is to reduce network traffic by using "good-enough" records, while ensuring that lock, read will obtains the current record from disk and to test the utility of volume mfses. Applied as volume MFS, you can attach tables in cached_mode for reporting, or normally for updated. To create a volume mfs, create a record in the SYSPTRS table. For example, create a record SYSPTRS, DATAVOL_CACHED
    <1> = "VOLUME"
    <2,1> = "RTI_CACHE_MFS"
    <2,2> = "RTP57"
    <3> = DATAVOL
    then DETACH_VOLUME "DATAVOL", ATTACH_TABLE "DATAVOL_CACHED"
     RTI_READU, RTI_WRITEU and RTI_WRITERELEASE functions have been added to allow programiing in a traditional Pick data processing style. The functions will pass throught to the server for the QM or D3 connectors, and use OI lock and unlock for other data sources. See TEST_RTI_READU for a example usage.

 

 

Top of Page

Section

XX

Top of Page

See Also