SOLID Server

ADMINISTRATOR'S GUIDE

















Database Technology Made Easy


































Copyright © 1992-96 Solid Information Technology Ltd. All rights reserved.

The information in this document is subject to change without notice and does not represent a commitment on the part of Solid Information Technology Ltd. No part of this manual may be reproduced or transmitted in any form or by any means, electronically or mechanically, without the written permission of Solid Information Technology Ltd.

SOLID ServerTM, SOLID Bonsai TreeTM, SOLID Remote ControlTM and SOLID SQL EditorTM are trademarks of Solid Information Technology Ltd. Other product and company names mentioned are trademarks or registered trademarks of their respective companies.

Document number SSAG-2.10-0596

TABLE OF CONTENTS






























WELCOME

Welcome to SOLID ServerTM, a care-free component DBMS for high-volume database applications and industrial products. As a care-free component, SOLID Server is easy to embed and easy to administer. Designed for high-volume applications, it is easy to distribute and easy to install.

Open solution. SOLID Server offers high performance within SQL standards - ANSI SQL2, Microsoft ODBC, SAG CLI and X/Open SQL - making it easy to embed into your applications.

High-power technology. SOLID Server is the first RDBMS that is fully scalable from stand-alone Windows notebook PCs to symmetric multiprocessing and RISC UNIX environments. It provides all the features you would expect to find in an industrial-strength database server. Multi-thread architecture, stored procedures, row level transaction management - you name it.

High-volume deployment. SOLID Server is a full-featured client/server database management system that requires just a few megabytes of disk space. Everything can be installed from two or three diskettes, so SOLID Server is simple to distribute and installation takes just a few minutes -
Database Technology Made Easy.

About This Guide

This Administrator's Guide is designed to make the administration of your SOLID Server even smoother. You can use this guide to learn how to use your SOLID Server, or you can refer to it whenever you need to know how a specific administrative procedure is performed. This guide is divided into following parts:

Introduction

Introduction to SOLID Server familiarizes you with the background and components of your SOLID database management system.

Administration

The following chapters give you step-by-step instructions on how to perform various administrative procedures:

  • Basic Administrative Tasks covers the typical administration tasks such as starting, connecting to and shutting down servers.
  • Database Maintenance explains how to make backups, create checkpoints and use timed commands.
  • Administration with SQL Statements gives readers the information they need to manage users, tables and indexes.
  • Network Connections describes how to connect to SOLID Server using different communication protocols.
  • Advanced features

    Next chapters give you additional information about SOLID Server including Parameter Settings , Performance Tuning, SOLID Server Diagnostic Tools and Problem Reporting.

    Appendixes

    The Appendixes give you detailed information about error messages, configuration parameters and SOLID SQL functionality.
    The Glossary of Terms explains some of the terminology used in the SOLID Server documentation.

    Other Solid Documentation

    SOLID Server documentation is distributed both as printed material and as electronic documentation. Additional product information and technical documentation are also available on-line through the Internet.

    Electronic documentation

  • Read Me file contains installation instructions and additional information about the specific product version. This readme.txt file is typically on the first SOLID Server diskette.
  • Release Notes file contains additional information about the specific product version. This relnotes.txt file is typically on the SOLID Server diskette and it will be copied onto your system when you install the software.
  • SOLID Remote ControlTM Help tells you how to use the SOLID Remote Control administration program. This help file also gives a detailed description of how to administer your SOLID Server.
  • SOLID SQL EditorTM Help tells you how to use the SOLID SQL Editor, a tool for executing SQL queries and commands.
  • SOLID SQL API Help tells you how to use the SQL application programming interface (API) . The same information is included in the SOLID Server Programmer's Guide and the SOLID Server Programmer's Reference.
  • SOLID ServerTM Administrator's Guide Help contains this documentation.
  • Printed manualsDocumentationprinted

  • SOLID Server Administrator's Guide describes the administrative procedures and gives information about SOLID SQL functionality.
  • Technical Description gives an overview of the architecture and features of SOLID Server.
  • SOLID Server Programmer's Guide and Reference contains basic information about using SOLID SQL API from C language, and how to exploit the advanced features of SOLID Server.
  • SOLID Online ServicesDocumentationon-line

    Solid Online Services on Web server offer the latest product and technical information free of charge. The service is located at
    http://www.solidtech.com/

    INTRODUCTION TO SOLID Server

    This chapter describes the background and the components of your SOLID database management system. See the Glossary of Terms at the end of this document for definitions of terminology used in the SOLID Server documents.

    Product Background

    SOLID Server was developed for the 90s, the era of client/server solutions setting new requirements for database management systems. In this era, users are expecting better solutions combining performance, standards, reliability and care-free administration.

    Furthermore, applications are delivered in high volumes to various platforms starting from small laptops to heavy-weight RISC processor environments. They often combine audio and video data, still pictures, text documents, and other large objects.

    SOLID Server - developed to meet all these requirements - is the database server for today's demanding applications.

    SOLID Server featuresSOLID :

  • Fast installation
  • Care-free administration
  • 7 x 24-hour operation
  • Automatic roll-forward recovery
  • Optional hot standby replication
  • Scalability from 386 PCs to SMP RISC environments
  • High performance within SQL standards
  • Industrial strength row level transaction management
  • Small footprint starting from i386, 1 MB RAM, 2 MB disk space
  • SOLID Components

    The SOLID database management system consists of the following components:

    SOLID Server

    SOLID Server SOLID Serveris the database server program. SOLID Server is:
  • an industrial strength client/server RDBMS
  • scalable from a stand alone PC to SMP RISC environments
  • available for major operating systems and network protocols
  • SOLID Remote Control and SOLCON

    SOLID Remote Control SOLID Remote Control is a program for administration of SOLID Servers. It allows you to:
  • administer all database servers in a network from a single workstation
  • generate backups either on-line or as a timed command
  • obtain server status information
  • SOLCON is a teletype version of SOLID Remote Control program.

    SOLID SQL Editor and SOLSQL

    SOLID SQL Editor SOLID SQL Editor is a tool for executing SQL queries and commands. It has an easy-to-use graphical user interface. With SOLID SQL Editor, you can:
  • use either the interactive or batch mode operation
  • have multiple active connections to various servers
  • save or print query results
  • SOLSQL is a teletype version of SOLID SQL Editor program.

    SOLID License Wizard

    SOLID License Wizard SOLID License Wizardis used to update your SOLID Server license. It generates a new SOLID Server license when you enter the information supplied to you in an activation letter.

    BASIC ADMINISTRATIVE TASKS

    This chapter covers the basic SOLID Server administrative tasks. It tells you how to:

  • install SOLID Server
  • start SOLID Server
  • create a new database
  • connect to the server using SOLID Remote Control or SOLID SQL Editor
  • shut down SOLID Server using SOLID Remote Control or from the server computer console
  • Installing SOLID Server

    If you have not yet installed SOLID Server, follow these quick-start instructions, or refer to the Read Me First notice delivered with the product diskettes for a detailed description of the installation.

    To install your SOLID Server

    1. Insert the SOLID Server diskette into your computer.
    2. Run the program setup from the diskette.
    3. Follow the instructions in the setup program.

    For installation instructions for Novell Netware, UNIX, VAX/VMS and Open VMS operating systems, refer to the Read Me First notice.


    Installing Solid Drivers

    Some environments include SOLID Server drivers (ODBC, UNIFACE) on a separate diskette. To install the drivers:

  • To install the ODBC driver, run the program setup from the ODBC Driver diskette.
  • For instructions on installing other drivers read the readme.txt file on the driver diskette.
  • Starting SOLID Server

    You start SOLID Server by clicking the icon labeled SOLID Server in the SOLID Server program group.

    When SOLID Server is started, it checks if a database already exists in the SOLID directory, that is, the directory where you installed SOLID executables. If a database file is found, SOLID Server will automatically open that database. If not, which is the case when you start the server for the first time, a new database will be created.

    On UNIX operating systems , you start the server by entering the command solid at the command prompt. When you start the server for the first time, enter the command solid -f at the command prompt to force the server to run in the foreground.
    On Novell Netware, you start the server by entering the command
    load solid.nlm at the command prompt.
    On Open VMS, you start the server by entering the command
    run solid at the command prompt


    Creating a New Database


    Dialog 1. Username and password entry.

    If a database does not exist, SOLID Server will automatically start creating a new database. In the Windows environment, creating the database begins with a dialog prompting for the database administrator's username and password.

    To create a new database

    1. Enter the database administrator's username and password in the appropriate text boxes. The password will be displayed as asterisks.
    2. Press the OK button.

    The username and password are case insensitive. The username must have at least two characters; the password at least three. You can use lower case letters from a to z, upper case letters from A to Z and the underscore character '_', and numbers from 0 to 9.

    NOTE. You must remember your username and password to be able to connect to SOLID Server. There are no default usernames; the username you enter when creating the database is the only username available for connecting to the new database.



    Dialog 2. Creating a new database.

    After accepting the database administrator's username and password, SOLID Server will create a new database. By default the database will be created as one file (solid.db) into the SOLID directory, where the executables are located. This is indicated by a dialog. The time that the database creation process takes depends on the hardware platform you are using.

    After the database has been created, SOLID Server starts listening to the network for client connection requests. In the Windows environment, you will see a SOLID Server icon, but in most environments SOLID Server will run invisibly in the background as a daemon process.

    NOTE. Create immediately a backup of your database to be able to use the log files to perform a roll-forward recovery.


    In OS/2, UNIX, Novell Netware, VAX/VMS and Open VMS operating systems, if you do not have an existing database, the following message appears:
    Database does not exist. Do you want to create a new database (y/n)?
    Answer y(es), and SOLID Server will prompt for the database administrator's username and password. When they have been accepted, a new database will be created.


    NOTE. If in the Windows environment you double-click the icon of a running SOLID Server, nothing will happen. SOLID Server is a background process that only reacts to messages from clients through the communication interface.


    Connecting to SOLID Server

    After starting your SOLID Server, you can test the configuration by connecting to the server. You can connect to the server from your workstation by using either SOLID Remote Control or SOLID SQL Editor.

    NOTE. You need to have the privileges of SYS_ADMIN_ROLE or SYS_CONSOLE_ROLE to be able to connect to a server using SOLID Remote Control.


    Connecting with SOLID Remote Control

    To start SOLID Remote Control

    SOLID Remote
    Control Icon

    1. Start SOLID Remote Control by clicking its icon.
      You will see SOLID Remote Control's desktop and the dialog
      Server definition. In the Server definition dialog you will see a server named DEFAULT. There is also an icon named DEFAULT on the bottom of your desktop. If you do not want to connect to the DEFAULT server, you should choose New in the Server definition dialog.
    2. Click the DEFAULT icon or press the Connect button on the dialog box.
      A logon dialog box will open.
    3. Enter the username and the password you entered in the appropriate text boxes when you created the new database.
    4. Press OK.
      After a while, you will see the server
      STATUS page opening. A connection to the server has been established.

    To disconnect from the server

    Close the window or choose Exit form the File menu.

    Refer to on-line help for detailed instructions on using SOLID Remote Control.

    On OS/2, UNIX, VAX/VMS, Open VMS and Novell Netware platforms you use the SOLCON program to test the configuration. See the chapter Using SOLCON and SOLSQL for detailed information.


    Connecting with SOLID SQL Editor

    To start SOLID SQL Editor

    SOLID SQL Editor Icon

    Connect button

    Dialog 3. Logon dialog box.

    1. Start SOLID SQL EditorSOLID SQL Editorstarting by clicking its icon.
      Click the
      Connect button. The logon dialog box appears on the top of the SOLID SQL Editor's document window. The dialog box shows the default server name you will connect to. You may change this name if you want to connect to another SOLID Server. The default Server name can be changed permanently by editing DSN parameter in [SQL Editor] section in the configuration file solid.ini.
    2. Enter your username and password into the appropriate fields, and press the OK button to continue.
      The password will be displayed as asterisks. The message bar in the lower left corner of the document window will confirm that the connection is established.

    To execute a predefined query


    Executing a predefined datadictionary query

    1. Select a predefined data dictionary query from the list box on the toolbar, and press the button located directly left of the list box.
      The results of the query will be shown in the lower part of the window.

    To load and execute a SQL script

    SQL button to execute current statement

    SQL button to execute all SQL statements

    1. Press the open file button on the left side of the toolbar.
      The
      Open file dialog will appear.
    2. Select a sample SQL script to be loaded, and press OK button to continue.
      The script will be loaded to the SOLID SQL Editor's document window.
    3. Press the SQL buttons on the toolbar to execute current or all SQL statements of the loaded script.

    Refer to on-line help for detailed instructions on SOLID SQL Editor.

    Viewing the SOLID Server Message Log

    SOLID Server writes all error and info messages to a text file. This message log file is named solmsg.out and it is located in the SOLID directory. You can view this file using any text editor or file viewer. The error messages and their explanations are listed in Appendix A SOLID Server Error Messages of this document and in electronic format as the SOLID Server Error Messages Help.

    Shutting Down SOLID Server

    You can shut down SOLID Server either by

  • using the SOLID Remote Control program
  • using the solcon program
  • clicking the server icon and selecting Close from the menu appearing in the Windows environment
  • All the shutdown mechanisms will start the same routine, which writes all buffered data to the database file, frees cache memory and finally terminates the server program. Shutting down a server may take a while since the server must write all buffered data from main memory to the disk.

    To shut down the server using SOLID Remote Control

    1. Connect to the server you want to close.
    2. Go to the USERS page.
    3. Press the Drop All... button.
    4. Answer Yes the question Do you want to disconnect all users? This will throw out all users expect you from the database.
    5. Go to the STATUS page.
    6. Press the Shut down... button.
    7. To the question Do you want to shut down the server?, answer Yes.

    NOTE. You need to drop all users to enable the shutdown process.


    To shut down the server from the server computer in the Windows operating system

    1. Click the Server icon and select Close from the menu that appears.
    2. If there are users connected to the server, choose OK in the appearing dialog box to continue the shutdown process. If there are no users connected to the server, the shutdown process is started immediately and a shutdown message is displayed.

    On OS/2, UNIX, VAX/VMS, Open VMS and Novell Netware use the SOLCON program to shut down the server. See the chapter Using SOLCON and SOLSQL for detailed information.


    DATABASE MAINTENANCE

    This chapter gives you information on data security and database maintenance. It is divided into following topics

  • making backups
  • restoring backups
  • recovering from abnormal shutdown
  • logging
  • creating checkpoints
  • closing and opening the database
  • changing database location
  • running several servers on one computer
  • entering timed commands
  • Making Backups

    Backups are made to secure the information stored in your database files. If you have lost your database files because of a system failure, you can continue working with the backup database.

    You can make backups manually by using SOLID Remote Control, or you can automate the backup operations to be run according to a fixed schedule. To automate backups, see the chapter Entering timed commands at the end of this chapter.

    NOTE. Be sure to have enough disk space in the backup directory. You will need space for your database and log files.


    To make a backup manually using SOLID Remote Control

    1. Connect to the server you want to backup.
    2. Go to the BACKUP page and press the Backup button.
    3. Enter the directory where you want the backup copy to be created, or use the suggested backup directory.
    4. Press the OK button.

    SOLID Server uses a multiversioning technique allowing backups to be made on-line. You need not close the database file or shut down the server. However, it is advisable to automate your backups to be run at non-busy hours. After completing the backup, copy your backup files on tape using your backup software for protection against disk crashes.

    NOTE 1. The backup directory entered must be a valid path name in the server operating system! For example, if the server runs on a UNIX operating system, path separators must be slashes, not backslashes.
    NOTE 2. The time needed for making a backup is the time that passed between the messages
    Backup started and Backup completed successfully, which arrive to your SOLID Remote Control MESSAGES page.


    Before starting the backup process, a checkpoint is created automatically. This guarantees that the state of a backup database is from the moment the backup process was started. The following files will be copied to the backup directory:

  • database file(s)
  • the configuration file (solid.ini)
  • the log file(s) modified or created after the previous backup (parameter BackupCopyLog is set yes by default)
  • The unnecessary log files are deleted from original directory after successful backup (parameter BackupDeleteLog is set yes by default).

    To correct a failed backupbackupsfailed

    When a backup is completed, you will see a message appear on the backup list in SOLID Remote Control. The first column in this list tells you the status of the backup, which can be either OK or Failed.

    If the backup failed, an error message appears on the message list. Correct the cause of the error and try again. The most common causes for failed backups are

  • the backup media is out of disk space
  • the backup directory does not exist
  • a database directory is defined as the backup directory
  • Restoring Backups

    There are two alternative ways to restore a backup. You can either:

  • return to the state when backup was created or
  • revive a backup database to the current state by using log files to add data inserted or updated after the backup was made.
  • To return to the state when backup was made

    1. Shut down SOLID Server, if it is running.
    2. Delete all log files from the log file directory. The default log file names are sol00001.log, sol00002.log, etc.
    3. Copy the database file(s) from the backup directory to the database file directory.
    4. Start your SOLID Server.

    This method will not perform any recovery because no log files exist.

    To revive a backup database to the current state

    1. Shut down SOLID Server, if it is running.
    2. Copy the database file(s) from the backup directory to the database file directory.
    3. Copy the log files from the backup directory to the log file directory. If there are logfiles with the same file names, do not replace those logfiles in the log file directory with logfiles from the backup directory.
    4. Start your SOLID Server.

    SOLID Server will automatically use the log files to perform a roll-forward recovery.

    Recovering from Abnormal Shutdown

    If the server was closed abnormally, i.e. if it was not shut down using the procedures described earlier, SOLID Server will automatically use the log files to perform a roll-forward recovery during the next start up. No administrative procedures are needed to start the recovery.

    The message Starting roll-forward recovery appears. After the recovery has been completed, a message will indicate how many transactions were recovered. If no transactions were made since the last checkpoint, this is indicated by the following message
    0 transactions recovered.

    Logging

    Logging guarantees that no committed operations are lost in case of a system failure. When an operation is executed in the server, the same operation is also saved to a log file. The log file is used for recovery in case the server is shut down abnormally.

    A backup operation will copy the log and database files to the backup directory and delete the log files from the database directory. You may change the default behavior by changing the parameters BackupCopyLogparametersBackupCopyLog and BackupDeleteLogparametersBackupDeleteLog in the General section of parameters in solid.ini.

    The log file can be written using different modes. The modes differ in the speed and security they offer. The default ping-pong method is the best choice in most cases.

    You can set the logging mode using the LogWriteMode parameterparametersLogWriteMode in the Logging section of parameters. The different modes are listed in Appendix B Configuration Parameters. The log manager of SOLID Server can run in four different operation modes. The choice of log method depends on the log file media and the level of security needed. The available logging methods are:

  • Ping-pong method
    This method uses the last two allocated disk blocks in the log file to write the newest and second-newest version of the same logical incomplete disk block. The ping-pong method toggles between these two blocks until one block becomes full.
  • Write-once method
    If the configuration parameter
    CommitMaxWait is set at zero, this method will write each log record immediately to the disk. An incomplete record is always padded with blanks, and the record is written to the disk. This is the method of choice when the log file storage media is, for example, a magnetic tape drive or a WORM, and when the update rate is low or when only one client at a time makes updates. If the server runs on a single thread, this method of logging should not be used.
    If the parameter
    CommitMaxWait is greater than zero, the logging works in group-commit mode. The server waits for the time specified in CommitMaxWait for someone else to complete the disk block. When the disk block is completed, it is written to the disk. If time out has expired instead, the block will be padded with blank records. This is the most efficient algorithm when the database update rate is extremely high and the updates are performed by several threads.
  • Overwriting method
    This method rewrites incomplete blocks at each commit until it becomes full. It may be used when data loss from the last log-file disk block is affordable.
  • Lazy-write method
    The lazy-write method is intended for applications that are not critical in the sense that loss of a few transactions in system crashes is affordable. On the other hand, it offers the best overall performance because transactions do not need to wait for disk writes at each commit. This is especially noteworthy when applications operate in very short transactions, for instance in autocommit mode.
  • TIP For both security and performance reasons, it is a good idea to keep log files and database files on different physical disk devices. If one disk drive is damaged, you will lose either your database files or log files but not both.


    Creating Checkpoints

    Checkpoints are used to store a consistent state of the database onto the database file. Checkpoints are needed for speeding up the roll-forward recovery after a system failure. In the roll-forward recovery, the database will start recovering transactions from the last checkpoint. The longer it has been since the last checkpoint was created, the more operations are recovered from the log file(s).

    To speed up recoveries, checkpoints should be created frequently; however, the server performance is reduced during the creation of a checkpoint. Furthermore, the speed of checkpoint creation depends on the amount of database cache used; the more database cache is used, the longer the checkpoint creation will take. Consider these issues when deciding the frequency of checkpoints. See Appendix B Configuration Parameters for a description of the use of CacheSize parameter.

    SOLID Server has an automatic checkpoint creation daemon, which creates a checkpoint after a certain number of writes to the log files. The default checkpoint interval is every 5000 log writes. You may change the value of the parameter CheckpointIntervalparametersCheckpointInterval in the General section of parameters. To learn how to change a parameter value, see the chapter SOLID Server Parameter Settings in this guide.

    Before and after a large database operation, you may want to create a checkpoint manually. You can create checkpoints manually by using SOLID Remote Control or you can automate the checkpoint creation using timed commands. To automate checkpoints, see the chapter Entering timed commands at the end of this chapter. Use the following procedure to create a checkpoint manually.

    NOTE. There can be only one checkpoint in the database at a time. When a new checkpoint is created, the older checkpoint is automatically erased.


    To create a checkpoint manuallycheckpointscreating manually using SOLID Remote Control

    1. Connect to the server for which you want to create a checkpoint.
    2. Select the BACKUP page.
    3. Press the Checkpoint button.
    4. Press the Yes button in the Do you want to create a checkpoint? dialog box.
  • Creation starts immediately. When it is completed, the message Checkpoint creation completed appears on the status line. You can view this message also on the Messages page.
  • On non-graphical user interfaces, you can create a checkpoint using the SOLCON program. Issue the command checkpoint to start checkpoint creation.


    Closing the Database

    In some cases you may want to prevent users from connect to the server. For example, when you are shutting down a server, you may want to prevent new users from connecting to the server. After closing the database, only connections from SOLID Remote Control will be accepted. Closing the database does not affect existing user connections.

    To close the database using SOLID Remote Control

    1. Connect to the server you want to close.
    2. Wait for the STATUS page to appear.
    3. Press the Close... button.
    4. Answer Yes to the question Do you want to close the database?

    After this, the database is closed and no new connections are accepted (clients will get SOLID Error Message 14506). This is indicated by the message text No new connections allowed.

    To open a closed database using SOLID Remote Control

    1. Connect to the server you want to open.
    2. Wait for the STATUS page to appear.
    3. Press the Open... button.
    4. Answer Yes to the question Do you want to open the database?

    After this, the database is opened and new connections are accepted. This is indicated by the message New connections allowed.

    Changing Database Location

    Changing a database location in SOLID Server is as easy as copying a file from one directory to another.

    NOTE. To copy a database file, you need to shut down the server to release the operating system file locks on the database file and log files.


    To change a database location

    1. Verify that SOLID Server is not running.
    2. Copy the database and log files to the target directory.
    3. Copy the solid.ini file to the target directory. Check that the database file directory, log file directory and backup directory are correctly defined in the configuration file solid.ini.
    4. Start SOLID Server using the target directory as the current working directory using the command line option -c directory-name.

    Running Several Servers on One Computer

    In some cases, you may want to run two or more databases on one computer. For example, you may need a configuration with a production database and a test database running on the same computer.

    SOLID Server is able to use one database per database server, but you can start several servers each using its own database file. To make these servers use different databases, either start the server processes from the directories your databases are located in or give the locations of configuration files by using the command line option -c directory-name to change the working directory. Remember to use different network names for each server.

    In the SOLID Server Windows version, there is a limitation to using several servers in one computer. Windows memory management allows only one SOLID Server to be run at a time. You can, however, trick Windows by renaming the other SOLID executable. For example, you can run SOLID.EXE and SOLID2.EXE at the same time without problems.

    Entering Timed Commands

    SOLID Server has a built-in timer, which allows you to automate your administrative tasks. You can use timed commands to execute system commands, to create backups, checkpoints and database status reports, to open and close databases, to disconnect users or to shut down servers.

    To enter a timed command using SOLID Remote Control

    1. Connect to the server.
    2. Go to the TIMER page, and press the New button.
    3. Select the command from the Commands list.
    4. Enter the time when you want the command to be executed.

    NOTE. The format used is HH:MM (24-hour format).


    1. Select a day for the timed command, or select All to have it executed every day.
    2. Enter the command arguments in the Argument text box.
    3. Press the Save button to enable the command.

    Arguments and the defaults for the different timed commandsarguments for timed commands
    CommandArgument Default
    backup backup directorythe default backup directory that is set in the configuration file
    throwout user name, allno default, argument compulsory
    checkpoint no argumentsno default
    shutdown no argumentsno default
    report report file nameno default, argument compulsory
    system system commandno default
    open no argumentsno default
    close no argumentsno default

    Using SOLCON and SOLSQL

    The SOLCON and SOLSQL programs are teletype versions of SOLID Remote Control and SOLID SQL Editor. This chapter describes how these programs are used.

    Starting SOLCON

    You start SOLCON by entering the command solcon at the command prompt. On Novell Netware you start SOLCON with the command load solcon at the command prompt. SOLCON connects to the first server specified in the Connect parameter in solid.ini file and prompts for the database administrator's username and password.

    SOLCON usageSOLCONusage

    solcon [options] [servername [username pwd]]
    

    Command line optionsSOLCONoptions
    OptionDescription Example
    -c directory Option -c changes the working directory. solcon -c d:\solid
    -e command A single command can be given at the command line with the option -e. SOLCON exits after completing the given command. solcon -e shutdown
    -f file-name You can execute commands written in a text file by giving the name of the file with the -f option. Each command must be in its own separate line. SOLCON exits after completing the execution of commands in the file. solcon -f adm.txt

    You can give the connection information at the command line to override the connect definition in solid.ini.

    Example:

    solcon "spx solid"
    

    Also the administrator's username and password can be given at the command line.

    Example:

    solcon "tcp localhost 1313" admin iohi4y
    

    Using SOLCON

    After the connection to the server has been established the command prompt appears. Entering the command help displays the following text:

    Available commands:
    exit         ex    Exits from SOLID Remote Control.
    help         ?     Displays this text.
    shutdown     sd    Stops SOLID Server.
    open         ope   Opens server connections, new 
                       connections are allowed.
    close        clo   Closes server connections, no new 
                       connections are allowed.
    throwout     to    Throws out users from SOLID 
                       Server.
    userlist     ul    Displays user list.
    makecp       mcp   Makes a checkpoint.
    backup       bak   Takes a backup copy of the     
                       database.
    backuplist   bls   Displays a status list of last
                       backups.
    status       sta   Displays server statistics.
    report       rep   Generates a report of server info 
                       to a file.
    messages     mes   Displays server messages.
    monitor      mon   Sets server monitoring on or off.
    version      ver   Displays server version info.
    errorcode    ec    Displays a description of an error 
                       code.
    hotstandby   hsb   Executes hot standby command.
    

    You can execute all commands either using this interface or giving them at the command line with the -e option or in a text file with the
    -f option. Commands can be given using either the complete command name or its abbreviation.

    Exiting SOLCON

    Enter the command exit at your SOLCON interface prompt to exit from SOLCON program.

    Making backups

    Enter the command backup at your SOLCON interface prompt to create a backup into your backup directory. To create a backup into a specified directory enter the command backup directory-name at your prompt.

    Displaying status list of backup

    To display the status list of the last backup enter the command backuplist at your SOLCON interface prompt.

    Creating checkpoints

    Enter the command makecp at your SOLCON interface prompt to create a checkpoint.

    Disconnecting users

    Enter the command throwout user-name or throwout user-id at your SOLCON interface prompt to disconnect a user. You can disconnect all users with the command throwout all.

    Displaying connected users

    To display all connected users enter the command userlist at your SOLCON interface prompt.

    Showing the server status

    To display the status of the server enter the command status at your SOLCON interface prompt.

    Showing the server messages

    To display the server messages enter the command messages at your SOLCON interface prompt.

    Generating a report

    To generate a server status report to the file named file-name enter the command report file-name at your SOLCON interface prompt.

    Showing version information

    To show information about the SOLID Server version and license enter the command version at your SOLCON interface prompt.

    Displaying a description of an error code

    To display a description of error code enter the command errorcode at your SOLCON interface prompt.

    Starting SOLSQL

    You start SOLSQL by entering the command solsql at the command prompt. On Novell Netware you start SOLSQL with the command load solsql at the command prompt. SOLSQL connects by default to the first server specified in the Connect parameter in solid.ini file and prompts for a username and password.

    You can give the connection information at the command line to override the connect definitions in solid.ini.

    SQLSQL usageSOLSQLoptions

    solsql [options] [servername [username pwd]]
    

    Example:

    solsql "spx solid"
    

    Also the username and password can be given at the command line.

    Example:

    solsql "tcp localhost 1313" admin iohi4y
    

    Command line optionsSOLSQLoptions
    OptionDescription
    -a Immediately commits every SQL statement.
    -c directory Changes working directory.
    -f file-name Input file name.
    -o file-name Option -o outputs only to a specified file.
    -s Silent mode, rows are not printed.
    -S Prints executed SQL statements.
    -t Prints elapsed time per SQL statement.

    Using SOLSQL

    Executing SQL statements

    After the connection to the server has been established a command prompt appears. SOLSQL executes SQL statements terminated by a semicolon.

    Example

    create table testtable (value integer, name varchar);
    insert into testtable (value, name) values (31, 'Duffy Duck');
    select value, name from testtable;
    drop table testtable;
    

    Exiting SOLID SQL Editor

    To exit from SOLSQL enter command

    quit;
    

    Executing a SQL script

    To execute a SQL script from a file, the name of the script file must be given as a command line parameter

    solsql server-name user-name password file-name
    

    All statements in the script must be terminated by a semicolon. SOLSQL exits after all statements in the script file have been executed.

    Example

    solsql "tcp localhost 1313" admin iohe4y tables.sql
    

    ADMINISTRATION WITH SQL STATEMENTS

    About SOLID SQL Syntax

    This chapter tells you how to manage users, tables, and indexes using SQL statements. You can use SOLID SQL Editor and many ODBC compliant tools for executing these SQL statements.

    To automate these tasks, you may want to save the SQL statements to a file. You can use these files for rerunning your SQL statements later or as a document of your users, tables, and indexes.

    The SQL syntax is based on the ANSI X3.135-1989 level 2 standard including important ANSI X3.135-1992 (SQL2) extensions. User and role management services missing from previous standards are based on the ANSI SQL3 draft. For a more formal definition of the syntax, refer to Appendix D SOLID Server SQL Syntax of this document. For the full description of the SOLID SQL API, refer to the SOLID SQL API Help file. The same information is included in SOLID Server Programmer's Guide and SOLID Server Programmer's Reference.

    Managing User Privileges and Roles

    You can use SOLID SQL Editor and many ODBC compliant SQL tools to modify user privileges. Users and roles are created and deleted using SQL statements or commands. A file consisting of several SQL statements is called a SQL script.

    In the SOLID directory, you will find an SQL scriptSQL scripts called users.sqlSQL scriptsusers.sql, which gives an example of creating users and roles. You can open, view and run it using SOLID SQL Editor. To create your own users and roles, you can make your own script describing your user environment.

    NOTE. All SQL statements must be terminated with a semicolon (;).


    User Privileges

    When using SOLID Server in a multi-user environment, you may want to apply user privileges to hide certain tables from some users. For example, you may not want an employee to see the table in which employee salaries are listed, or you may not want other users to mess with your test tables.

    SOLID Server allows you to apply five different kinds of user privileges. A user may be able to view, delete, insert, update or reference information in a table or view. Any combination of these privileges may also be applied. A user who has none of these privileges to a table is not able to use the table at all.

    User Roles

    Privileges can also be granted to an entity called a role. A role is a group of privileges that can be granted to users as one unit. SOLID Server allows you to create roles and assign users to certain roles.

    NOTE. Same string can not be used both as a user name and a role name.


    The following user and role names are reserved:
    Reserved name Description
    PUBLIC You can use this role to grant privileges to all users. When user privileges to a certain table are granted to the role PUBLIC, all current and future users have the specified user privileges to this table. This role is granted automatically to all users.
    SYS_ADMIN_ROLE This is the default roleuser rolesadministrator role for the database administrator. This role has administration privileges to all tables, indexes and users. This is also the role of the creator of the database.
    _SYSTEM This is the schema name of all system tables and views.
    SYS_CONSOLE_ROLE This roleuser roles system console role has right to use SOLID Remote Control, but does not have other administration privileges.

    Examples of SQL Statements

    Below are some examples of SQL commands for administering users, roles and user privileges.

    Creating users

    CREATE USER <user_name> IDENTIFIED BY <password>;
    

    Only an administrator has the privilege to execute this statement. The following example creates a new user named CALVIN with the password HOBBESpasswordsentering.

    CREATE USER CALVIN IDENTIFIED BY HOBBES;
    

    Deleting usersusersdeleting

    DROP USER <user_name>;
    

    Only an administrator has the privilege to execute this statement. The following example deletes the user named CALVIN.

    DROP USER CALVIN;
    

    Changing a password

    ALTER USER <user_name> IDENTIFIED BY <new password>;
    

    The user <user_name> and the administrator have the privilege to execute this command. The following example changes CALVIN's password to GUBBESpasswordsentering.

    ALTER USER CALVIN IDENTIFIED BY GUBBES;
    

    Creating rolesuser rolescreating

    CREATE ROLE <role_name>;
    

    The following example creates a new user role named GUEST_USERS.

    CREATE ROLE GUEST_USERS;
    

    Deleting rolesuser rolesdeleting

    DROP ROLE <role_name>;
    

    The following example deletes the user role named GUEST_USERS.

    DROP ROLE GUEST_USERS;
    

    Granting privileges to a user or a roleuser privileges granting

    GRANT <user_privilege> ON <table_name> TO <user_name or role_name>;
    

    The possible user privileges on tables are SELECT, INSERT, DELETE, UPDATE, REFERENCES and ALL. ALL will give a user or a role all five privileges mentioned above. EXECUTE privilege will give a user a right to execute a stored procedure. A new user has not any privileges.

    The following example grants INSERT and DELETE privileges on a table named TEST_TABLE to the GUEST_USERS role.

    GRANT INSERT, DELETE ON TEST_TABLE TO GUEST_USERS;
    

    The following example grants EXECUTE privilege on a stored procedure named SP_TEST to user CALVIN.

    GRANT EXECUTE ON SP_TEST TO CALVIN;
    

    Granting privileges to a user by giving the user a roleuser rolesgranting privileges to

    GRANT <role_name> TO <user_name>;
    

    The following example gives the user CALVIN the privileges that are defined for the GUEST_USERS role.

    GRANT GUEST_USERS TO CALVIN;
    

    Revoking privileges from a user or a roleuser privilegesrevoking

    REVOKE <user_privilege> ON <table_name> FROM <user_name or role_name>;
    

    The following example revokes the INSERT privilege on the table named TEST_TABLE from the GUEST_USERS role.

    REVOKE INSERT ON TEST_TABLE FROM GUEST_USERS;
    

    Revoking privileges by revoking the role of a useruser rolesrevoking the role of a user

    REVOKE <role_name> FROM <user_name>;
    

    The following example revokes the privileges that are defined for the GUEST_USERS role from CALVIN.

    REVOKE GUEST_USERS FROM CALVIN;
    

    Granting administrator privileges to a useruser privilegesgranting administrator privileges

    GRANT SYS_ADMIN_ROLE TO <user_name>;
    

    The following example grants administrator privileges to CALVIN, who now has all privileges to all tables.

    GRANT SYS_ADMIN_ROLE TO CALVIN;
    

    Managing Tables

    SOLID Server has a dynamic data dictionary that allows you to create, delete and alter tables on-line. SOLID Server tables are managed using SQL commands.

    In the SOLID directory, you can find an SQL script named sample.sqlSQL scriptssample.sql, which gives an example of managing tables. You can view and run the script using SOLID SQL Editor.

    Below are some examples of SQL statements for managing tablesSQL statementsexamples for managing tables. For a formal definition of the SOL syntax of SOLID Server, refer to Appendix D SOLID Server SQL Syntax of this document.

    TIP. If you want to see the names of all tables in your database, issue the SQL statement SELECT * FROM TABLES or use predefined command TABLES from SOLID SQL Editor. The table names can be found in the column TABLE_NAME.


    Examples of SQL Statements

    Below are some examples of SQL commands for administering tables.

    Creating tables

    CREATE TABLE <table_name> (<column> <column type> 
       [,<column> <column type>]...);
    

    All users have privileges to create tables.

    The following example creates a new table named TEST with the column I of the column type INTEGER and the column TEXT of the column type VARCHAR.

    CREATE TABLE TEST (I INTEGER, TEXT VARCHAR);
    

    Removing tablestablesremoving

    DROP TABLE <table_name>;
    

    Only the creator of the particular table or users having SYS_ADMIN_ROLE have privileges to remove tables.

    The following example removes the table named TEST.

    DROP TABLE TEST;
    

    Adding columns to a tablecolumnsadding to a table

    ALTER TABLE <table_name> ADD COLUMN <column_name> 
       <column type>;
    

    Only the creator of the particular table or users having SYS_ADMIN_ROLE have privileges to add or delete columns in a table.

    The following example adds the column C of the column type CHAR(1) to the table TEST.

    ALTER TABLE TEST ADD COLUMN C CHAR(1);
    

    Deleting columns from a tablecolumnsdeleting from a table

    ALTER TABLE <table_name> DROP COLUMN 
       <column_name>;
    

    The following example statement deletes the column C from the table TEST.

    ALTER TABLE TEST DROP COLUMN C;

    SOLID SQL Editor:
    Commit button

    NOTE. If the autocommit mode is set OFF, you need to commit your work before you can modify the table you altered. To commit your work after altering a table, use the SQL statement COMMIT WORK;, or press the Commit button in SOLID SQL Editorcommitting workafter altering tabletablescommitting work after altering. If the autocommit mode is set ON - this is the default in SOLID SQL Editor - the transactions are committed automatically.

    Managing Indexes

    Indexes are used to speed up access to tables. The database engine uses indexes to access the rows in a table directly. Without indexes, the engine would have to search the whole contents of a table to find the desired row. There are two kinds of indexes: non-unique indexes and unique indexes. A unique index is an index where all key values are unique. You can create as many indexes as you like to a single table. However, adding indexes slows down updates on that table.

    SOLID Server allows you to create and delete indexes using the following SQL statementsSQL statementsexamples for managing indexes. For a formal definition of the syntax of these statements, refer to Appendix D SOLID Server SQL Syntax of this document.

    Examples of SQL Statements

    Below are some examples of SQL commands for administering indexes.

    Creating an index on a table

    CREATE INDEX <index_name> ON <table_name> 
       (<column_name> [ASC | DESC]);
    Only the creator of the particular table or users having SYS_ADMIN_ROLE have privileges to create or delete indexes.
    

    The following example creates an index named X_TEST on the table TEST to the column I.

    CREATE INDEX X_TEST ON TEST (I);
    

    Creating a unique index to a tableindexescreating a unique index

    CREATE UNIQUE INDEX <index_name> ON <table_name> 
       (<column_name>);
    

    The following example creates a unique index named UX_TEST on the table TEST to the column I.

    CREATE UNIQUE INDEX UX_TEST ON TEST (I);
    

    Deleting an indexindexesdeleting

    DROP INDEX <index_name>;
    

    The following example deletes the index named X_TEST.

    DROP INDEX X_TEST;

    SOLID SQL Editor:
    Commit button

    NOTE. If the autocommit mode is set OFF, you need to commit your work before you can modify the table on which you altered the indexes. To commit your work after modifying indexes, use the SQL statement COMMIT WORK;, or press the Commit button in SOLID SQL Editorcommitting workafter altering tabletablescommitting work after altering. If the autocommit mode is set ON - this is the default in SOLID SQL Editor - the transactions are committed automatically.

    Primary Keys

    A primary key is a column or combination of columns that uniquely identify each record in a table. Primary keys like indexes speed up access to tables. The difference between primary keys and indexes in SOLID Server is that the primary key cluster data in the database according to the key values.

    This behavior differs from the default clustering in SOLID Server, where the data is clustered according to the insertion time only.

    Foreign Keys

    A foreign key is a column or group of columns within a table that refers to, or relates to, some other table through its values. The foreign key must always include enough columns in its definition to uniquely identify a row in the referenced table. The main reason for defining foreign keys is to ensure that rows in one table always have corresponding rows in another table; that is, to ensure that referential integrity of data is maintained.

    NETWORK CONNECTIONS

    Communication between Client and Server

    The database server and client transfer information between each other through the computer network using a communication protocol.

    When a database server process is started, it will publish at least one network name that distinguishes it in the network. We say that the server starts to listen to the network using the given network name. The network name consists of a communication protocol and a server name.

    To establish a connection from a client to a server they both have to be able to use the same communication protocol. The client has to know the network name of the server and often also the location of the server in the network. The client process uses the network name to specify which server it will connect to.

    This chapter will give you information on how to administer network names.

    Network Names for Servers

    The network name of a server consists of a communication protocol and a server name. This combination identifies the server in the network. The network names are defined in configuration file solid.ini in [Com] section with the Listen parameter. The solid.ini file should be located in the server program's working directory or in the directory set by the SOLIDDIR environment variable.

    A server may use an unlimited number of network names. To make establishing connections easier all components of network names are case insensitive.

    Network names are managed on the NETWORK page in SOLID Remote Control or directly by editing the server configuration file solid.ini. An example of an entry in solid.ini:

    [Com]
    Listen = tcpip 1313, nmpipe solid
    

    The example contains two network names which are separated by a comma. The first one uses the protocol TCP/IP and the service port 1313, the other one uses the Named Pipes protocol with the name 'solid'. In our example the 'tcpip' and 'nmpipe' are communication protocols while '1313' and 'solid' are server names.

    If the Listen parameter is not found SOLID uses environment dependent defaults as network names.

    NOTE. When a database server process is started it publishes the network names it starts to listen. This information is also written to a file named solmsg.out in the located in the same directory as solid.ini file.
    NOTE. Network names must be unique within one host computer. For example you cannot have two SOLID Servers running, both listening to the same TCP/IP port in one host, but it is possible that the same port number is in use in different hosts. Exceptions to this are the NetBIOS and IPX/SPX protocols, which require that used server names are unique throughout the whole network.


    To add a network name for the server using SOLID Remote Controlnetwork namesadding

    1. Connect to the server using SOLID Remote Control.
    2. Select the NETWORK page.
    3. Press the New button.
    4. Select a protocol from the Protocol list.

      You can only use a protocol that is supported by the server's operating system. An invalid protocol is ignored.
    5. Type the name of the server in the Server name text box.
    6. Press the Save button.

      After saving the network name, you can see network names currently set in the list on the
      NETWORK page.

    To modify a network namenetwork namesmodifying

    1. Select the network name from the list and press Edit button, or double click the network name in the list.
    2. Change the protocol or the name of the server.
    3. Save the settings by pressing the Save button.

    To remove a network name from the servernetwork namesremoving

    1. Select the protocol from the list.
    2. Press the Remove button.

    NOTE. The modifications to network names become active immediately after pressing the Save or Remove buttonnetwork namesactivating modifications.
    HINT. You can use the Enabled check box to select the network names you use. You can disable and enable a protocol by checking the Enabled checkbox in the Edit dialog box.


    Network Name for Clients

    The network name of a client consists of a communication protocol, an optional host computer name and a server name. By this combination the client specifies the server it will establish a connection to. The communication protocol and the server name must match the ones that the server is using in its network listening name. Most protocols need additionally the host computer name to be specified if the client and server are running on different machines. All components of the client's network name are case insensitive.

    The client's network names are defined in the configuration file solid.ini in the [Com] section with the Connect parameter. The solid.ini file should be located in the client program's working directory or in the directory set by the SOLIDDIR environment variable.

    The following connect line in the solid.ini of the client workstation will connect a client application using the TCP/IP protocol to a SOLID Server running on a host computer named 'spiff' and listening with the name (port number in this case) '1313'.

    [Com]
    Connect = tcpip spiff 1313
    

    If the Connect parameter is not found in the configuration file solid.ini the client uses the environment dependent default instead. The defaults for the Listen and Connect parameters are selected so that the client will always connect to a local SOLID Server listening with a default network name. So the local communication (inside one machine) does not necessarily need a configuration file for establishing a connection.

    NOTE 1. When the connection is requested by a client application program using the SQLConnect function the network name of the server is given as a Data Source Name parameter for that function. If the given name is not an empty string its contents are used as a network name and the Connect parameter in the configuration file is omitted. If an empty string is passed the possibly existing Connect parameter is used.
    NOTE 2. In the Windows (3.x, 95, NT) operating system, the connection can be made by using the SOLID ODBC driver. When a client program is using the SOLID ODBC driver, the network name of the server is given as the ODBC Data Source Name and the
    Connect parameter in the configuration file is not used.


    Communication Protocols

    A client process and SOLID Server communicate with each other by using computer networks and network protocols. A network operating system - for example, IBM LAN Server or Novell NetWare - is not necessarily needed. You only need a functioning communication protocol for both ends. Supported communication protocols depend on the type of computer and network you are using.

    The following paragraphs describe the supported communication protocols and common environments that may be used and also show the required forms of network names for the various protocols.

    Shared Memory

    Usually the fastest way two processes can exchange information is to use Shared Memory. This can be used only when the server and client processes are both running in the same computer. The Shared Memory protocol uses a shared memory location for moving data from one process to another.

    To use the Shared Memory protocol in SOLID Server, select ShMem from the list of protocols in SOLID Remote Control and enter a server namecommunication protocolsShared Memory. The server name has to be unique only in this computer.

    The format used in the solid.ini filenetwork namesShared Memory

    Server	Listen = shmem <server name>
    Client	Connect = shmem <server name>
    

    NOTE 1. Server names must be character strings less than 128 characters long.
    NOTE 2. This protocol cannot generally be used if the client and server programs run under different operating systems in the same computer. For example, you cannot use this protocol to communicate from a client process running under a Windows OS/2 session to a server running on the same computer under native OS/2.


    ShMem32ShMem32

    There is a special protocol ShMem32 available when connecting from a Windows 16-bit application to a 32-bit server running on a Windows NT or Windows 95 operating system. This implementation uses the general thunk facility of Win32 API to make the 16- to 32-bit calls possible.

    This is the suggested way of connecting from 16-bit applications, such as SOLID Remote Control and SOLID SQL Editor, to a native Windows NT or Windows 95 SOLID Server (32-bit) running in the same machine.

    ShMem32 is also available SOLID Server for Windows 16-bit when it is run in Windows 95 or Windows NT. When run in such an environment SOLID Server automatically starts to listen to both 16-bit and 32-bit ShMem protocols with the following specification

    Listen = ShMem SOLID
    

    Client applications first try to connect using the 16-bit version but if it does not succeed, they try ShMem32 with the following specification

    Connect = ShMem32 SOLID
    

    TCP/IP

    The TCP/IP protocol is typically used for communicating to a server process running under a UNIX operating system. When starting a server using the TCP/IP protocol, you must reserve a port number for it. You will find reserved port numbers in the /etc/services file of your system. Select a free number greater than 1024 since smaller numbers are usually reserved for the operating system.

    To use the TCP/IP protocol, select TCP/IP in the list of protocols in SOLID Remote Control and enter a non-reserved port number.

    The format used in the solid.ini filenetwork namesTCP/IP

    Server 	Listen = tcpip <server port number>
    Client 	Connect = tcpip [host computer name] 
                          <server port number>
    

    NOTE 1. If the server is running in the same computer with the client program, the host computer name need not be specified. The client computer has to have the used host name listed in its etc/hosts file or it must be recognized by the DNS (Domain Name Server). You can also give the host computer's TCP/IP address in dotted decimal format (e.g.: 102.53.94.97) instead of its host name.
    NOTE 2. On Windows NT and UNIX the TCP/IP protocol is usually included in the operating system. On other environments (like Windows, OS/2, VAX/VMS) the TCP/IP software needs to be installed to the system. For a list of supported TCP/IP software, contact your SOLID Server dealer.
    NOTE 3. Using TCP/IP in Windows needs a third party Windows Sockets package.


    Using Windows SocketsWindows Sockets

    In the Windows operating system a third party software package containing winsock.dll file is required. The SOLID Server Windows Sockets driver has been tested with the following third party Windows Sockets packages:

  • Microsoft Windows for Workgroups
  • Digital PATHWORKS v5.0
  • Chameleon NetManage
  • FTP's TCP/IP
  • NetBIOS

    The NetBIOS protocol is commonly used in the Windows (3.x, 95, NT) and OS/2 operating systems.

    To use the NetBIOS protocol, select NetBIOS in the list of protocols in SOLID Remote Control, and enter a non-reserved server name.

    The format used in the solid.ini filenetwork namesNetBIOS

    Server	Listen = netbios [-aLANA_NUMBER] <server name>
    Client	Connect = netbios [-aLANA_NUMBER] <server name>
    

    NOTE 1. The server name must be a character string at most 16 characters long. It may not begin with an asterisk (*).
    NOTE 2. In the above format the optional -aLANA_NUMBER is used to override the default value of the LANA number. The default LANA number is 0 in Windows environments, 1 in OS/2 environments.
    NOTE 3. In Windows NT the available LANA_NUMBERs can be checked using the Network Setup found in the Control Panel. The default value 0 may not be generally very good. You should choose the one(s) where the protocol stack matches the other computers you are using. The LANA_NUMBER (Network Route: Nbf->Elnk3->Elnk31) that uses NetBEUI as a transport usually functions quite smoothly when used for SOLID communication.
    NOTE. 4. The server names have to be unique in the whole network. Establishing a connection or starting the listening using the NetBIOS protocol may be somewhat slow because of the checks needed for uniqueness.


    Named Pipes

    Named Pipes is a protocol commonly used in the Windows (WfW, 95, NT) and OS/2 operating systems.

    Windows for Workgroups and Windows 95 support Named Pipes only in client end communication. Windows NT supports Named Pipes both in server and client end communication.

    In OS/2 Named Pipes can always be used locally inside one machine. OS/2 3.0 Warp Connect contains the Lan Requester and hereby also supports a Named Pipes network client. Using Named Pipes from inside another OS/2 system (1.x, 2.x or 3.0 Warp) over a network needs additionally the Lan Requester client software to be installed. To run Named Pipes the server always needs components from the Lan Server product to be installed.

    The format used in the solid.ini filenetwork namesNamed Pipes

    Server	Listen = nmpipe <server name>
    Client	Connect = nmpipe [host computer name]
                           <server name>
    

    NOTE 1. The server names must be character strings at most 50 characters long.
    NOTE 2. If the server is running in the same computer with the client program, the host computer name should not be specified. The only exception to this is Windows NT: if a Windows 16-bit client application (such as SOLID SQL Editor) is connecting to a native Windows NT process (SOLID Server) the host machine name must be specified.
    NOTE 3. In order to connect to the SOLID Server for Windows NT through NamedPipes user must have at least the same rights as the user, who started the server. For example if an administrator starts the server only users with administrator's rights are able to connect to the server through NamedPipes. Similarly if a user with normal user's rights starts the server all users with greater rights are able to connect the server through NamedPipes. If a user doesn't have proper rights, SOLID Communication Error 21306 message will be given. This has been fixed in SOLID Server version 2.1.
    NOTE 4. It is not recommended to use the Named Pipes communication from SOLID Remote Control. The asynchronous nature of SOLID Remote Control communication may cause problems with Named Pipes.


    DECnet

    The DECnet protocol is used to connect to a server running on a OpenVMS system. To use this protocol in Windows, you need to have PATHWORKS version 4.0 or later installed to your client computer. To use this protocol in OS/2, you need to have PATHWORKS version 2.0 or later installed to your client computer.

    To use the DECnet protocol, select DECnet in the list of protocols in SOLID Remote Control and enter a non-reserved server name.

    The format used in the solid.ini filenetwork namesDECnet

    Server 	Listen = decnet <server name>
    Client 	Connect = decnet <node name> <server name>
    

    NOTE. To establish a connection the DECnet node name of the server machine is configured to your node database. The node name can be given either as a node number such as '1.1' or as a node name such as 'VAX1'.


    IPX/SPX

    The IPX/SPX protocol is used to communicate with SOLID Server for Novell Netware.

    SOLID Server for Novell Netware starts listening with the default listening name SOLID if no listening name is specified in the configuration file solid.ini. When SOLID Server starts, it prints out the network and node information of the server machine.

    The SOLID Server listening name can be given as a character string or as a socket number. If the given network name is a valid socket number i.e. hex number with exactly 4 characters (e.g. 400F) SOLID Server starts listening in the given port. If the network name could not be interpreted as a socket number it is treated as a server name character string and is published using Novell NetWare SAP (Service Advertising Protocol).

    Connecting to a SOLID Server using SAP needs specifying only the correct server name in Connect parameter. If the server is listening using some given port, the full NLM server info (see comment below) has to be given.

    To use the IPX/SPX protocol, select IPX/SPX in the list of protocols in SOLID Remote Control and enter a non-reserved server name.

    The format used in the solid.ini filenetwork names IPX/SPX

    Server	Listen = spx {<server name> | <socket number>}
    Client	Connect = spx {<NLM server info> |
                         <server name>}
    

    NOTE 1. The server names must be less than 48 characters long.
    NOTE 2. In the above format, <NLM server info> stands for a string containing the network number, the node number and the socket number separated by colons. For example, <NLM server info> for network 1, node 1, socket number 1313 is 00000001:000000000001:1313. You can abbreviate the information be removing the leading zeros. The previous server info could also be written as 1:1:1313.
    <server name> stands for an alphanumeric string.
    NOTE 3. The possibility to use socket numbers as the listening name is supported mainly for historical reasons. SAPing is intended to be the primary method.
    NOTE 4. After removing a network name or shutting down SOLID Server using SOLID Remote Control the server name used may still remain reserved for up to one minute although everything completes successfully. The error 'network name in use' is displayed if SOLID Server is restarted immediately. This is a 'normal' NetWare SAP feature and happens more often if your network consists of more than one NetWare server. Propagating the SAP cancellation packets to every network node may take a while.


    A Summary of Protocols

    The following tables summarize the possible operating systems and required forms for network names for the various communication protocols.

    SERVER protocols and network names
    ProtocolServer OS Network name in solid.ini file
    Shared
    Memory
    Windows 3.x
    WfW
    Windows 95
    Windows NT
    OS/2
    Listen = shmem <server>
    NetBIOSWindows 3.x
    WfW
    Windows 95
    Windows NT
    OS/2
    Listen = netbios <server>
    Named PipesWindows NT
    OS/2 1
    Listen = nmpipe <server>
    IPX/SPXNovell Netware Listen = spx <server>
    Listen = spx <socket number>
    TCP/IP
    Windows 3.x
    WfW
    Windows 95
    Windows NT
    UNIX
    OS/2 4
    VAX/VMS 2
    OpenVMS 2
    Listen = tcpip <port>
    DECnetWindows 3.x 3
    WfW 3
    VAX/VMS
    OpenVMS
    Listen = decnet <server>

    1) the network server must run LanServer or LanManager server program
    2) requires TCP/IP product (available from Digital)
    3) requires Pathworks for DOS/Windows v 4.1 or later, connect address cannot contain node name, only DECnet node number
    4) requires IBM TCP/IP v 2.0 or later

    CLIENT protocols and network names
    ProtocolClient OS Network name in solid.ini file
    Shared
    Memory
    Windows 3.x
    WfW
    Windows 95
    Windows NT
    OS/2
    Connect = shmem <server>
    NetBIOSWindows 3.x
    WfW
    Windows 95
    Windows NT
    OS/2
    Connect = netbios <server>
    Named PipesWfW
    Windows 95
    Windows NT
    OS/2
    Connect = nmpipe [host] <server>
    IPX/SPXNovell Netware Windows 3.x 1
    OS/25
    WfW 1
    Connect = spx <server>
    Connect = spx <NLM server info>
    TCP/IP
    Windows 3.x
    WfW
    Windows 95
    Windows NT
    UNIX
    OS/26
    VAX/VMS 4
    OpenVMS 4
    Connect = tcpip [host] <port>
    DECnetWindows 3.x 2
    WfW 2
    VAX/VMS
    OpenVMS
    OS/2 3
    Connect = decnet <host> <server>

    1) requires WfW with IPX/SPX or native Novell client support
    2) requires Pathworks for DOS/Windows v 4.1 or later
    3) requires Pathworks for OS/2 2.0 or later
    4) requires TCP/IP product (available from Digital)
    5) requires NetWare client for OS/2
    6) requires IBM TCP/IP v 1.2.1 or later

    NOTE. The previous tables contain the protocols and operating systems that were available when this guide was printed. For an updated list, contact your SOLID Server dealer.


    PARAMETER SETTINGS

    By managing the parameters of your SOLID Server, you can modify the environment, performance and operation of the server process. This chapter explains SOLID Server parameters and their settings. The topic Parameter management in this chapter gives you step-by-step instructions on how to view and set the parameter values on the Parameters page in SOLID Remote Control.

    Default Settings

    When SOLID Server is started, it attempts to open the configuration file solid.ini in the current directory or in the directory set by the SOLIDDIR environment variable. The configuration values for the server parameters are included in this file. If the file does not exist, SOLID Server will use default settings for the parameters. Also, if a value for a parameter is not set in the solid.ini file, SOLID Server will use a default value for the parameter. The default values depend on the operating system you are using.

    Generally, default settings offer good performance and operability, but in some cases modifying some parameter values can improve performance.

    Most Important Parameters

    The following paragraphs will explain the most important SOLID Server parameters and their default settings. See Appendix B Configuration Parameters of this manual for a description of all parameters.

    [Com]
    Connect

    Listen

    The parameter Connect in the [Com] section defines a network name for a client program. The client program will establish a connection to a server program with a similar Listen network name. The format for these parameters is explained in the chapter Communication protocols.

    If the connect information is defined in the client program with the SQLConnect function, this parameter is ignored. In the Windows and Windows NT operating systems the connection can be made by using SOLID ODBC driver. When a client program is using SOLID ODBC driver the ODBC Data Source Name is used and the Connect parameter has no effect. The solid.ini file, which includes the Connect parameter, must be located in the client program's working directory or in the directory set by SOLIDDIR environment variable.

    The following connect line will connect a client program using the TCP/IP protocol to a SOLID Server running in a computer named 'spiff' and server port number '1313'.

    connect = tcpip spiff 1313
    

    [IndexFile]
    FileSpec
    _[1...N]

    In SOLID Server data and indexes are stored in the same logical files. The term 'index file' is used here as a synonym for the term 'database file'.

    The FileSpec parameter describes the location and the maximum size of the index file (database file)FileSpec. You can use it to define the location and maximum value the index file may grow to.

    You can also use the FileSpec parameter to divide the index file into multiple files and onto multiple disksindex filesplitting to multiple disks. To do this, specify another FileSpec parameter identified by the number 2. The index file will be written to the second file if it grows over the maximum value of the first FileSpec parameter. The default value for this parameter is solid.db, 2147483647 (which equals 2 GB expressed in bytes).

    FileSpec_1=SOLID.DB 2147483647
    

    In the following example, the parameters divide the index file on the disks C:, D: and G: to be split after growing larger than 1 GB (=1073741824 bytes).

    FileSpec_1=C:\SOLID\SOLID.1 1073741824
    FileSpec_2=D:\SOLID\SOLID.2 1073741824
    FileSpec_3=G:\SOLID\SOLID.3 1073741824
    

    NOTE. The index file locations entered must be valid pathnames in the server operating system! For example, if the server runs on a UNIX operating system, path separators must be slashes instead of backslashes.


    Splitting the index file on multiple disks will increase the performance of the server because multiple disk heads will access the data in your index file. There is no limit to the number of index files you may use.

    [General]
    BackupDirectory

    Backups of the database, log files and the configuration file solid.ini are copied to the backup directory. The default directory 'backup' is a directory relative to your SOLID directory. For example if the parameter is

    BackupDirectory= bu
    

    then the backup will be written to a directory that is a sub-directory of the SOLID directory. You may also specify a absolute path name for the directory. For example:

    BackupDirectory=e:\backup\solid
    

    The backup directory must exist and it must have enough disk space for the backup files. It can be set to any existing directory except the database file directory, the log file directory or the working directory.

    NOTE. The backup directory entered must be a valid pathname in the server's operating system! For example if the server runs on a UNIX operating system, path separators must be slashes instead of backslashes.


    [Logging]
    FileNameTemplate

    Log files are created automatically to the directory specified and by using the filename structure specified by the parameter FileNameTemplate in the Logging section. For example, the following setting

    FileNameTemplate = d:\logdir\sol#####.log
    

    instructs SOLID Server to create log files to directory d:\logdir and to name them sequentially starting from sol00001.log .

    [Sorter]
    TmpDir_[1...N]

    The TmpDir[1...N] parameter in the Sorter section specifies the directory (or directories) that can be used for the external sorter algorithm which is used for sorting processes that do not fit in main memory. All temporary files used by the external sort are created in this directory (or directories) and are automatically deleted. Setting this parameter enables the use of external sorter.

    [IndexFile]
    CacheSize

    The CacheSize parameter (the default value depends on the server operating system) defines the amount of main memory the server allocates for the cache. Although SOLID Server is able to run with a small cache size, a larger cache size speeds up the server. The cache size needed depends on the size of the index file, the number of connected users, and the nature of the operations executed against the server. You can view your current CacheSize parameter value with SOLID Remote Control.

    [Srv]
    Threads

    The Threads parameter in the [Srv] section defines the amount of threads the SOLID database engine will use in addition to the communication, I/O and log manager threads. The default value is two threads for database engine use.

    [SQL]
    Info

    The Info parameter in the [SQL] section specifies the tracing level on the SQL parser and optimizer as an integer between 0 (no tracing) and 8 (extensive trace outputting). Trace information will be output to the file named soltrace.out in the SOLID directory.

    [Com]
    Trace

    TraceFile

    These parameters control the outputting of network trace information vital to solving possible network problems. By setting the parameter Trace to the value Yes, SOLID Server starts logging trace information on network messages to the file specified in the TraceFile parameter.

    Parameter Management

    SOLID Server parameters and their values can be viewed and modified from SOLID Remote Control or by directly editing the solid.ini file in the SOLID directory.

    To view current parameter values using SOLID Remote Controlparametersviewing current values

    1. Connect to the server from SOLID Remote Control.
    2. Select the Parameters page.

      A list of current parameters and their values is displayed.

    The parameters displayed are the parameters currently active in the server. If you have not set a parameter value, the displayed value is the default value for the parameter. The default values are set at start-up and depend on the operating system SOLID Server runs on.

    To set a new parameter value using SOLID Remote Controlparameterssetting new values

    1. Select from the list the parameter you want to modify.
    2. Press Edit or double click the parameter.
    3. Uncheck the Use default box if it is checked.
    4. Enter the new value for the parameter.
    5. Press Save to save the parameter value.

    NOTE 1. To force a parameter value change to take effect you must shut down and restart the server process.
    NOTE 2. The new parameter values are not checked by the server. Setting an unreasonable value for a parameter may result in an operation failure the next time the server process is started. Do not set a parameter to a random value unless you know what you are doing. Use the default parameter values as an indication on the value range.


    Constant Parameter Values

    On the PARAMETERS page, some parameters are shown in gray shade. These parameters have constant values. The values were set when the database was created, and they cannot be modified through SOLID Remote Control.

    If you want to use different constant values, you have to create a new database. Before creating a new database, set new constant values by editing the solid.ini file in the SOLID directory.

    The example below sets a new block size for the index file by adding the following lines to the solid.ini fileindex filechanging block size:

    [Indexfile]
    Blocksize=4096
    

    After editing and saving the solid.ini file, move the old database and log files, and start SOLID Server. The server program will create a new database with the new constant values from the solid.ini file.

    PERFORMANCE TUNING

    This chapter discusses techniques that you can use to improve the performance of SOLID Server.

    Tuning SQL Statements and Applications

    Tuning the SQL statements, especially in applications where complex queries are involved, is generally the most efficient means of improving the database performance.

    You should tune your application before tuning the RDBMS because:

  • during application design you have control over the SQL statements and data to be processed
  • you can improve performance even if you are not familiar with the internal working of the RDBMS you are going to use
  • if your application is not tuned well, it will not run well even on a well-tuned RDBMS
  • So, find out what data your application processes, what are the SQL statements used and what operations the application performs on the data.

    Using SOLID Server Diagnostic Tools

    SOLID Server provides the following tools that may be helpful in tuning applications:

  • the SQL info facility
  • the EXPLAIN PLAN statement
  • For additional information on how to use these tools, refer to chapter SOLID Server Diagnostic Tools.

    Indexes

    Indexes can be used to improve the performance of queries. A query that references an indexed column in its WHERE clause can use the index. If the query selects only the indexed column, the query can read the indexed column value directly from the index, rather than from the table.

    If a table has a primary key, SOLID Server orders the rows on disk in the order of the values of the primary key. Otherwise the rows are ordered using the ROWID, i.e. the rows are stored on disk in the order they are inserted into the database.

    Indexes improve the performance of queries that select a small percentage of rows from a table. You should consider using indexes for queries that select less than 15% of table rows.

    Full table scan

    If a query does not use an index, SOLID Server must perform a full table scan to execute the query. This involves reading all rows of a table sequentially. Each row is examined to determine whether it meets the criteria of the query's WHERE clause. Finding a single row with an indexed query can be substantially faster than finding the row with a full table scan. On the other hand, a query that selects more than 15% of a table's rows may be performed faster by a full table scan than by an indexed query.

    To perform a full table scan, every block in the table is read. For each block every row stored in the block is read. To perform an indexed query the rows are read in the order in which they appear in the index, regardless of which blocks contain them. If a block contains more than one selected row it may be read more than once. So, there are cases when a full table scan requires less I/O than an indexed query.

    Concatenated indexes

    An index can be made up of more than one column. Such an index is called a concatenated index.

    Whether or not a SQL statement uses a concatenated index is determined by the columns contained in the WHERE clause of the SQL statement. A query can use a concatenated index if it references a leading portion of the index in the WHERE clause. A leading portion of an index refers to the first column or columns specified in the CREATE INDEX statement.

    Example:

    create index job_sal_deptno on emp(job, sal, deptno);
    

    This index can be used by these queries:

    select * from emp where job = 'clerk' and sal = 	800 and deptno = 20;
    select * from emp where sal = 1250 and job = 	salesman;
    select job, sal from emp where job = 'manager' ;
    

    The following query does not contain the first column of the index in its WHERE clause and cannot use the index:

    select * from emp where sal = 6000;
    

    Choosing columns to index

    The following list gives guidelines choosing columns to index:

  • index columns that are used frequently in WHERE clauses
  • index columns that are used frequently to join tables
  • index columns that are used frequently in ORDER BY clauses
  • index columns that have few of the same values or unique values in the table.
  • do not index small tables (tables that use only a few blocks) because a full table scan may be faster than an indexed query
  • if possible choose a primary key that orders the rows in the most appropriate order
  • if only one column of the concatenated index is used frequently in WHERE clauses, place that column first in the CREATE INDEX statement
  • if more than one column in concatenated index is used frequently in WHERE clauses, place the most selective column first in the CREATE INDEX statement
  • Tuning Memory Allocation

    Tuning Operating System

    Your operating system may store information in

  • real memory
  • virtual memory
  • expanded storage
  • disk
  • Your operating system may also move information from one location to another. Depending on your operating system, this movement is called paging or swapping. Many operating systems page and swap to accommodate large amounts of information that do not fit into real memory. However, this takes time. Excessive paging or swapping can reduce the performance of your operating system and indicates that your system's total memory may not be large enough to hold everything for which you have allocated memory. You should either increase the amount of total memory or decrease the amount of database cache memory allocated.

    Database Cache

    The information used by SOLID Server is stored either in memory or on disk. Since memory access is faster than disk access, it is desirable for data requests to be satisfied by access to memory rather than access to disk.

    The basic element of the database server memory management system is a pool of central memory buffers of equal size. The size of the memory buffers and their amount can be configured to meet the demands of different application environments.

    Database cache uses available memory to store information that is read from the hard disk. When an application next time requests this information, the data is read from memory instead of from the hard disk. The default value of cache depends on the platform used and can be changed by changing the Cachesize parameter. Increasing the value is recommended when there are several concurrent users.

    The following values can be used as a starting point:

  • a dedicated server with 16 MB RAM: Cachesize 4 MB
  • a dedicated server with 32 MB RAM: Cachesize 10 MB
  • a dedicated server with 64 MB RAM: Cachesize 30 MB
  • NOTE. You should increase the value of Cachesize very carefully. Too large a value leads to very poor performance.


    Tuning I/O

    The performance of many software systems is inherently limited by disk I/O. Often CPU activity must be suspended while I/O activity completes.

    Distributing I/O

    Disk contention occurs when multiple processes try to access the same disk simultaneously. To avoid this move files from heavily accessed disks to less active disks until they all have roughly the same amount of I/O.

    So:

  • use separate disk for log files
  • divide your database into several files and place each of these database file on a separate disk
  • consider using separate disk for external sorter
  • Sorting

    SOLID Server does all sorting by default in memory. The amount of memory used for sorting is determined by the parameter SORTARRAYSIZE in the [SQL] section. If the amount of data to be sorted does not fit into the allocated memory, you may want to increase the value of the parameter SORTARRAYSIZE. If there is not enough memory to increase the value of SORTARRAYSIZE you should activate external sort that stores intermediate information to disk.

    The external disk sort is activated by adding the following section and parameters in the configuration file solid.ini:

    [sorter]
    TmpDir_1 = c:\tmp
    

    Additional sort directories are added with similar definitions:

    [sorter]
    TmpDir_1 = c:\tmp
    TmpDir_2 = d:\tmp
    TmpDir_3 = e:\tmp
    

    Tuning Checkpoints

    Checkpoints affect:

  • recovery time performance
  • runtime performance
  • Frequent checkpoints can reduce the recovery time in the event of a system failure. If the checkpoint interval is small, then relatively few changes to the database are made between checkpoints and relatively few changes must be recovered.

    Checkpoints cause SOLID Server to perform I/O, so they momentarily reduce the runtime performance. This overhead is usually small.

    SOLID Server DIAGNOSTIC TOOLS

    SOLID Server provides several diagnostic tools for observing performance. These tools, SQL info facility and the EXPLAIN PLAN statement, are helpful in tuning your application and identifying inefficient SQL statements in your application.

    SOLID Server provides also tools for tracing the communication between client and server and locating problems that may slow down your application. The Network trace facility can be used in the server end and the Ping facility in the client end.

    Observing Performance

    The SQL Info Facility

    Run your application with the SQL info facility enabled. The SQL info facility generates information for each SQL statement processed by SOLID Server.

    SQL Info levels

    Info valueInformation
    0no output
    1table, index and view info in SQL format
    2SQL execution graphs
    3some SQL estimate info, Solid selected key name
    4all SQL estimate info, Solid selected key info
    5Solid info also from discarded keys
    6Solid table level info
    7SQL info from every fetched row
    8Solid info from every fetched row

    The SQL info facility is turned on by setting a non-zero value to the Info parameter in the [SQL] section of the comfiguration file. The output is written to a file named soltrace.out in the SOLID directory.

    Example:

    [SQL]
    info= 1
    

    The SQL info facility can also be turned on with the following SQL statement (this sets info on for only for the client that executes the statement):

    SET SQL INFO ON LEVEL info-value FILE file-name
    

    and turned off with the following SQL statement:

    SET SQL INFO OFF
    

    The EXPLAIN PLAN Statement

    The EXPLAIN PLAN statement is used to show the execution plan that the SQL optimizer has selected for a given SQL statement. An execution plan is a series of primitive operations, and an ordering of these operations, that SOLID Server performs to execute the statement. Each operation in the execution plan is called a unit.
    UnitDescription
    JOIN UNITJoin unit joins two or more tables. The join can be done by using loop join or merge join. Note that the join unit is generated also for queries that reference only a single table. In that case no join is executed in the join unit, the join unit just passes the rows without manipulating them.
    TABLE UNITTable unit is used to fetch the data rows from a table. Table unit is always the last unit in the chain, since it is responsible for fetching the actual data from the index or table.
    ORDER UNITOrder unit is used to order rows for grouping or to satisfy ORDER BY. The ordering can be done in memory or using an external disk sorter.
    GROUP UNITGroup unit is used to do grouping and aggregate calculation.

    The syntax of the EXPLAIN PLAN statement is:

    EXPLAIN PLAN FOR sql-statement
    

    Explain Plan Table Columns

    The table returned by the EXPLAIN PLAN statement contains the following columns.
    Column name Description
    IDThe output row number, used only to guarantee that the rows are unique.
    UNIT_IDThis is the internal unit id in the SQL interpreter. Each unit has a different id. The unit id is a sparse sequence of numbers, because the SQL interpreter generates unit ids also for those units that are removed during the optimization phase. If more than one row has the same unit id it means that those rows belong to the same unit. For formatting reasons the info from one unit may be divided into several different rows.
    PAR_IDParent unit id for the unit. The parent id number refers to the id in the UNIT_ID column.
    JOIN_PATHFor join unit there is a join path which specifies which tables are joined in the join unit and the join order for tables. The join path number refers to the unit id in the UNIT_ID column. It means that the input to the join unit comes from that unit. The order in which the tables are joined is the order in which the join path is listed. The first listed table is the innermost table in a loop join.
    UNIT_TYPEUnit type is the execution graph unit type.
    INFOInfo column gives additional info. It may contain e.g. index usage, the database table name and constraints used in the database engine to select rows. Note that the constraints listed here may not match those constraints given in the SQL statement.

    The following texts may exist in the INFO column for different types of units.
    Unit typeText in Info column Description
    TABLE UNIT<tablename> The table unit refers to table <tablename>.
    TABLE UNIT<contraints> The constraints that are passed to the database engine are listed. If for example in joins the constraint value is not known in advance, the constraint value is displayed as NULL.
    TABLE UNITSCAN TABLE Full table scan is used to search for rows.
    TABLE UNITSCAN <indexname> Index <indexname> is used to search for rows. If all selected columns are found from an index, sometimes it is faster to scan the index instead of the clustering key because the index has fewer disk blocks.
    TABLE UNITPRIMARY KEY The primary key is used to search rows. This differs from SCAN in that the whole table is not scanned because there is a limiting constraint to the primary key attributes.
    TABLE UNITINDEX <indexname> Index <indexname> is used to search for rows. For every matching index row, the actual data row is fetched separately.
    TABLE UNITINDEX ONLY <indexname> Index <indexname> is used to search for rows. All selected columns are found from the index, so the actual data rows are not fetched separately.
    JOIN UNITMERGE JOIN Merge join is used to join the tables.
    JOIN UNITLOOP JOIN Loop join is used to join the tables.
    ORDER UNITNO ORDERING REQUIRED No ordering is required, the rows are retrieved in correct order from the database engine.
    ORDER UNITEXTERNAL SORT External sorter is used to sort the rows. To enable external sorter, the temporary directory name must be specified in the Sorter section of the configuration file.
    ORDER UNITFIELD <n> USED AS PARTIAL ORDER Internal sorter (in-memory sorter) is used for sorting and the rows retrieved from the database engine are partially sorted with column number <n>. The partial ordering helps the internal sorter to avoid multiple passes over the data.
    ORDER UNITNO PARTIAL SORT Internal sorter is used for sorting and the rows retrieved in random order from the database engine.

    Example 1

    EXPLAIN PLAN FOR SELECT * FROM TENKTUP1 WHERE UNIQUE2_NI BETWEEN 0 AND 99;
    
    IDUNIT_ID PAR_IDJOIN_
    PATH
    UNIT_
    TYPE
    INFO
    12 13 JOIN UNIT
    23 20 TABLE UNITTENKTUP1
    33 20 FULL SCAN
    43 20 UNIQUE2_NI <= 99
    53 20 UNIQUE2_NI >= 0
    63 20

    Execution graph:

    JOIN UNIT 2 gets input from TABLE UNIT 3

    TABLE UNIT 3 for table TENKTUP1 does a full table scan with constraints UNIQUE2_NI <= 99 and UNIQUE2_NI >= 0

    Example 1. Execution graph

    Example 2

    EXPLAIN PLAN FOR SELECT * FROM TENKTUP1, TENKTUP2 WHERE TENKTUP1.UNIQUE2 > 4000 AND TENKTUP1.UNIQUE2 < 4500 AND TENKTUP1.UNIQUE2 = TENKTUP2.UNIQUE2;
    
    IDUNIT_ID PAR_IDJOIN_
    PATH
    UNIT_
    TYPE
    INFO
    16 19 JOIN UNITMERGE JOIN
    26 110
    39 60 ORDER UNITNO ORDERING REQUIRED
    48 90 TABLE UNITTENKTUP2
    58 90 PRIMARY KEY
    68 90 UNIQUE2 < 4500
    78 90 UNIQUE2 > 4000
    88 90
    910 60 ORDER UNITNO ORDERING REQUIRED
    107 100 TABLE UNITTENKTUP1
    117 100 PRIMARY KEY
    127 100 UNIQUE2 < 4500
    137 100 UNIQUE2 > 4000
    147 100

    Execution graph:

    JOIN UNIT 6 the input from order units 9 and 10 are joined using merge join algorithm

    ORDER UNIT 9 orders the input from TABLE UNIT 8. Since the data is retrieved in correct order, no real ordering is needed

    ORDER UNIT 10 orders the input from TABLE UNIT 7. Since the data is retrieved in correct order, no real ordering is needed

    TABLE UNIT 8: rows are fetched from table TENKTUP2 using primary key. Constraints UNIQUE2 < 4500 and UNIQUE2 > 4000 are used to select the rows

    TABLE UNIT 7: rows are fetched from table TENKTUP1 using primary key. Constraints UNIQUE2 < 4500 and UNIQUE2 > 4000 are used to select the rows

    Example 2. Execution graph

    Tracing Communication between Client and Server

    SOLID Server provides the following tools for observing the communication between client and server:

  • the Network trace facility
  • the Ping facility
  • You can use these tools to analyze the functionality of the networking between client and server.

    The Network Trace Facility

    By setting the [Com] section parameter Trace in the configuration file solid.ini to the value Yes, SOLID Server starts logging trace information on established network connections to the default trace file or file specified in the TraceFile parameter. These messages contain information about:

  • loaded DLLs
  • network addresses
  • possible errors
  • The Network trace facility is turned on either by editing the configuration file

    [Com]
    Trace={Yes|No}
    ; default No
    TraceFile= file-name
    ; default soltrace.out
    

    or using the environment variables SOLTRACE and SOLTRACEFILE to override the definitions in the configuration file. These files are created into the server's and client's working directories. Settings of SOLTRACE and SOLTRACEFILE environment variables have the same effect as the parameters Trace and TraceFile in the configuration file.

    NOTE. Defining the TraceFile configuration parameter or the SOLTRACEFILE environment variable automatically turns on the Network trace facility.


    The third alternative to turn on the Network trace facility is to use the option -t and/or -ofilename as a part of the network name. The option
    -t turns on the Network trace facility. The option -o turns on the facility and defines the name of the trace output file.

    The precedence of the previous three alternatives is:

    1. the configuration file solid.ini and the parameters Trace and TraceFile
    2. the environment variables
    3. the options -t or -o as a part of the network name

    Using the environment variables overrides the definitions in the configuration file. Using the options -t or -o overrides all other definitions.

    Example 1. Defining parameter trace in the configuration file

    [Com]
    Connect=nmp SOLID
    Listen=nmp SOLID
    Trace=Yes
    

    Example 2. Defining environment variables

    set SOLTRACE=Yes
    

    or

    set SOLTRACEFILE=trace.out
    

    Example 3. Using network name options

    [com]
    Connect=nmp -t solid
    Listen=nmp -t solid
    

    or

    [com]
    Connect=nmp -oclient.out solid
    Listen=nmp -oserver.out solid
    

    The Ping Facility

    The Ping facility can be used to test the performance and functionality of the networking. The Ping facility is built in all SOLID clients and is turned on with the network name option -plevel. The output of the Ping facility is created into the client's working directory. The output file name is named using the parameter TraceFile or the environment variable SOLTRACEFILE or with the network name option -ofile-name.

    The Ping facility levels are:
    SettingFunction Description
    0no operation do nothing, default
    1check that server is alive exchange one 100 byte message (plus init/done RPCs)
    2basic functional test exchange messages of sizes 0.1K, 1K, 2K..30K, increment 1K
    3basic speed test exchange 100 messages of sizes 0.1K, 1K, 8K and display each subresult and total time
    4heavy speed test exchange 100 messages of sizes 0.1K, 1K, 2K, 4K, 8K, 16K and display each subresult and total time
    5heavy functional test exchange messages of sizes 1..30K, increment 1 byte

    Example 1

    The client turns on the Ping facility by using the following network name:

    nmp -p1 -oping.out SOLID
    

    This runs the Ping facility at the level 1 into a file named ping.out. This test checks if the server is responding properly and is done during the connection to the server.

    After the Ping facility has been run, the client exits with the following message:

    SOLID Communication return code xxx: Ping test successful/failed, results are in file FFF.XX
    

    Clients can always use the Ping facility at level 1. Using levels 2 to 5 is possible only if the server is using the Ping facility at least at the same level.

    Example 2

    If the server is using the following listen parameter

    [com]
    Listen=nmp -p3 SOLID
    

    clients can run the Ping facility at levels 1, 2 and 3, but not 4 and 5.

    NOTE. Ping clients running at level greater than 1 may cause quite heavy network traffic. They will also slow down ordinary SQL clients connected to the same SOLID Server.


    PROBLEM REPORTING

    SOLID Server offers sophisticated diagnostic tools and methods for producing high quality problem reports with very limited effort. Use the diagnostic tools to capture all the relevant information about the problem.

    All problem reports should contain the following files and information:

  • solid.ini
  • license number
  • solmsg.out
  • solerror.out
  • soltrace.out
  • problem description
  • steps to reproduce the problem
  • all error messages and codes
  • contact information, preferably email address of the contact person
  • Problem Categories

    Most problems can be divided into the following categories:

  • SOLID SQL API
  • SOLID ODBC Driver
  • UNIFACE driver for SOLID Server
  • communication problems between client and server
  • The following pages include a detailed instructions to produce proper problem report for each problem type. Please follow the guidelines carefully.

    SOLID SQL API Problems

    If the problem concerns the performance of SOLID SQL API or a specific SQL statement, you should run SQL info facility at level 4 and include the generated soltrace.out file into your problem report. This file contains the following information:

  • create table statements
  • create view statements
  • create index statements
  • SQL statement(s)
  • SOLID ODBC Driver Problems

    If the problem concerns the performance of SOLID Server ODBC Driver, please include the following information:

  • SOLID ODBC driver (scliw16.dll/scliw32.dll) version and size
  • ODBC Driver Manager (odbc.dll/odbc32.dll) version and size
  • If the problem concerns the cooperation of SOLID Server and any third party standard software package, please include the following information:

  • full name of the software
  • version and language
  • manufacturer
  • error messages from the third party software package
  • Use ODBC trace option to get a log of the ODBC statements and include it to your problem report.

    UNIFACE Driver for SOLID Server Problems

    If the problem concerns the performance of UNIFACE driver for SOLID Server, please include following information:

  • SOLID UNIFACE driver version and size
  • UNIFACE version and platform
  • Contents of the UNIFACE message frame
  • Error codes from the driver, $STATUS, $ERROR
  • all necessary files to reproduce the problem (TRXs, SQL scripts, USYS.ASN etc.)
  • Communication between Client and Server

    If the problem concerns the performance of the communication between client and server use the Network trace facility and include the generated trace files into your problem report. Please include the following information:

  • SOLID communication DLLs used: version and size
  • other communication DLLs used: version and size
  • description of the network configuration
  • APPENDIX A ERROR MESSAGES

    The error messages are divided into the following categories:

    SQL Errors

    These errors are caused by erroneous SQL statements and are detected by the SOLID SQL Parser. Administrative actions are not needed.

    Database Errors

    These errors are detected by the SOLID Database Engine and may demand administrative actions.

    System Errors

    These errors are detected by the operating system and demand administrative actions.

    Table Errors

    These errors are caused by erroneous SQL statements and detected by the SOLID Database Engine. Administrative actions are not needed.

    Server Errors

    These errors are caused by erroneous administrative actions or client requests. They may demand administrative actions.

    Communication Errors

    These errors are caused by network errors or faulty configuration of the SOLID Server software. These errors demand administrative actions.

    Procedure Errors

    These errors are caused by errors in the definition or execution of a stored procedure. Administrative actions are not needed.

    See also:

    See Appendix D SOLID Server SQL Syntax and Appendix C SOLID Server Data Types for more information.

    SOLID SQL Errors

    Error codeDescription
    SQL Error 1Parsing error 'syntax error'
    The SQL parser could not parse the SQL string. Check the syntax of the SQL statement and try again.
    SQL Error 2Table <table> can not be opened
    You may not have privileges to access the table and its data.
    SQL Error 3Table <table> can not be created
    Table can not be created. You may not have privileges for this operation.
    SQL Error 4Illegal column definition <column>
    A column type in your CREATE TABLE statement is illegal. Use a legal type for the column.
    SQL Error 5Table <table> can not be dropped
    Table can not be dropped. Only the owner (i.e. the creator) can drop it.
    SQL Error 6Illegal value specified for column <column>
    The value specified for column is invalid. Check the value for the column.
    SQL Error 7Insert failed
    The server failed to do the insertion. You may not have INSERT privilege on the table or it may be locked.
    SQL Error 8Delete failed
    The server failed to do the deletion. You may not have DELETE privilege on the table or the row may be locked.
    SQL Error 9Row fetch failed
    The server failed to fetch a row. You may not have SELECT privilege on the table or there may be an exclusive lock on the row.
    SQL Error 10View <view> can not be created
    You can not create this view. You may not have SELECT privilege on one or more tables in the query-specification of your CREATE VIEW statement.
    SQL Error 11View <view> can not be dropped
    You can not drop this view. Only the owner (i.e. the creator) of the view can drop it.
    SQL Error 12Illegal view definition <view>
    The view definition is illegal. Check the syntax of the definition.
    SQL Error 13Illegal column name <column>
    Column name is illegal. Check that the name is not a reserved name.
    SQL Error 14Call to function <function> failed
    Function call to function failed. Check the arguments and their types.
    SQL Error 15Arithmetics error
    An arithmetics error occurred. Check the operators, values and types.
    SQL Error 16Update failed
    The server failed to update a row. There may a lock on a row.
    SQL Error 17View is not updatable
    This view is not updatable. UPDATE, INSERT and DELETE operations are not allowed.
    SQL Error 18Inserted row does not meet check option condition
    You tried to insert a row, but one or more of the column values do not meet column constraint definition.
    SQL Error 19Updated row does not meet check option condition
    You tried to update a row, but one or more of the column values do not meet column constraint definition.
    SQL Error 20Illegal CHECK constraint
    A check constraint given to the table is illegal. Check the types of the check constraint of this table.
    SQL Error 21Insert failed because of CHECK constraint
    You tried to insert a row, but the values do not meet the check option conditions.
    SQL Error 22Update failed because of CHECK constraint
    You tried to update a row, but the values do not meet the check option conditions.
    SQL Error 23Illegal DEFAULT value
    The DEFAULT value for the column given is illegal.
    SQL Error 24Incorrect number of items in VALUES list
    The number of items given in VALUES list is different from the number of columns in the table. Check the number of items.
    SQL Error 25Duplicate columns in INSERT column list
    You have included a column in column list twice. Remove duplicate columns.
    SQL Error 26At least one column definition required in CREATE TABLE
    You need to specify at least one column definition in a CREATE TABLE statement.
    SQL Error 27Illegal REFERENCES column list
    There are wrong number of columns in your REFERENCES list.
    SQL Error 28Only one PRIMARY KEY allowed in CREATE TABLE
    You can use only one PRIMARY KEY in CREATE TABLE.
    SQL Error 29GRANT failed
    Granting privileges failed. You may not have privileges for this operation.
    SQL Error 30REVOKE failed
    Revoking privileges failed. You may not have privileges for this operation.
    SQL Error 31Multiple instances of a privilege type
    You tried to grant privileges to a role or a user. You have included multiple instances of a privilege type in the list of privileges.
    SQL Error 32Illegal constant <constant>
    Illegal constant was found. Check the syntax of the statement.
    SQL Error 33Column name list of illegal length
    You have entered different number of columns in CREATE VIEW statement to the view and to the table.
    SQL Error 34UPDATE expression of illegal type
    An expression in UPDATE statement has illegal type for a column.
    SQL Error 35Column names not allowed in ORDER BY for UNION
    You can not use column name in an ORDER BY for UNION statement.
    SQL Error 36Nested aggregate functions
    Nested aggregate functions can not be used. For example: SUM(AVG(<column>)).
    SQL Error 37Aggregate function with no arguments
    An aggregate function was entered with no arguments. For example: SUM().
    SQL Error 38UNION of tables with different row types
    You have tried to select a union of tables with incompatible row types. The row types in a union of tables must be compatible.
    SQL Error 39COMMIT WORK failed
    Committing a transaction failed.
    SQL Error 40ROLLBACK WORK failed
    Rolling back a transaction failed.
    SQL Error 41Savepoint could not be created
    A savepoint could not be created.
    SQL Error 42Could not create index <index>
    An index could not be created. You may not have privileges for this operation. You need to be an owner of the table or have SYS_ADMIN_ROLE to have privileges to create index for the table.
    SQL Error 43Could not drop index <index>
    An index could not be dropped. You may not have privileges for this operation. You need to be an owner of the table or have SYS_ADMIN_ROLE to have privileges to drop index from the table.
    SQL Error 44Could not create schema <schema>
    A schema could not be created.
    SQL Error 45Could not drop schema <schema>
    A schema could not be dropped.
    SQL Error 46Illegal ORDER BY specification
    You tried to use an ORDER BY column that does not exist. Refer to an existing column in the ORDER BY specification.
    SQL Error 47Maximum length of identifier is 31
    You have exceeded the maximum length for the identifier.
    SQL Error 48Subquery returns more than one row
    You have used a subquery that returns more than one row. Only subqueries returning one row may be used in this situation.
    SQL Error 49Illegal expression <expression>
    You tried to insert or update a table using an aggregate function (SUM, MAX, MIN or AVG) as a value. This is not allowed.
    SQL Error 50Ambiguous column name <column>
    You have referenced a column which is exists in more than one table. Use syntax <table>.<column> to indicate which table you want to use.
    SQL Error 51Non-existent function <function>
    You tried to use a function which does not exist.
    SQL Error 52Non-existent cursor <cursor>
    You tried to use a cursor which is not created.
    SQL Error 53Function call sequence error
    A function was called in wrong order. Check the sequence and success of the function calls.
    SQL Error 54Illegal use of a parameter
    A parameter was used illegally. For example: SELECT * FROM TEST WHERE ? < ?;
    SQL Error 55Illegal parameter value
    A parameter has an illegal value. Check the type and value of the parameter.
    SQL Error 56Only ANDs and simple condition predicates allowed in UPDATE CHECK
    All search condition predicates are not supported.
    SQL Error 57Opening the cursor did not succeed
    Server failed to open a cursor. You may not have cursor open at this moment.
    SQL Error 58Column <column> is not referenced in group-by-clause
    You tried to group rows using <column>. All columns in group-by-clause must be listed in your select-list. A star ('*') notation is not allowed with GROUP BY.
    SQL Error 59Comparison between incompatible types
    You tried to compare values which have incompatible types. Incompatible types are for example an integer and a date value.
    SQL Error 60Reference to the insert table not allowed in the source query
    You have referenced in subquery a table where you are inserting values. This is not allowed.
    SQL Error 61Reference to the update table not allowed in subquery
    You have referenced in subquery a table where you are updating values. This is not allowed.
    SQL Error 62Reference to the delete table not allowed in subquery
    You have referenced in subquery a table where you are deleting values. This is not allowed.
    SQL Error 63Subquery returns more than one column
    You have used a subquery that returns more than one column. Only subqueries returning one column may be used.
    SQL Error 64Cursor <cursor> not updatable
    The cursor opened is not updatable.
    SQL Error 65Insert or update tried on pseudo column
    You tried to update a pseudo column (ROWID, ROWVER). Pseudo columns are not updatable.
    SQL Error 66Could not create user <user>
    A user could not be created. You may not have privileges for this operation.
    SQL Error 67Could not alter user <user >
    A user could not be altered. You may not have privileges for this operation.
    SQL Error 68Could not drop user <user >
    A user could not be dropped. You may not have privileges for this operation.
    SQL Error 69Could not create role <role>
    A role could not be created. You may not have privileges for this operation.
    SQL Error 70Could not drop role <role>
    A role could not be dropped. You may not have privileges for this operation.
    SQL Error 71Grant <role> failed
    Granting role failed. You may not have privileges for this operation.
    SQL Error 72Revoke <role> failed
    Revoking role failed. You may not have privileges for this operation.
    SQL Error 73Comparison of vectors of different length
    You have tried to compare row value constructors that have different number of dimensions. For example you have compared (a,b,c) to (1,1).
    SQL Error 74Expression * not compatible with aggregate expression
    The aggregate expression can not be used with * columns. Specify columns using their names when used with this aggregate expression. This usually happens when GROUP BY expression is used with the * columns.
    SQL Error 75Illegal reference to table <table>
    You have tried to reference a table which is not in the FROM list. For example: SELECT T1.* FROM T2.
    SQL Error 76Ambiguous table name <table>
    You have used the syntax <table>.<column name>ambiguously. For example: SELECT T1.* FROM T1 A,T1 B WHERE A.F1=0;
    SQL Error 77Illegal use of aggregate expression
    You tried to use aggregate expression illegally. For example: SELECT ID FROM TEST WHERE SUM(ID) = 3;
    SQL Error 78Row fetch failed
    The server failed to fetch a row. You may not have SELECT privilege on the table or there may be an exclusive lock on the row.
    SQL Error 79Subqueries not allowed in CHECK constraint
    You tried to use subquery in a check constraint.
    SQL Error 80Sorting failed
    External sorter is out of disk space or cache memory. Modify parameters in configuration file solid.ini.
    SQL Error 81SET syntax results in error
    SQL Error 82Improper type used with LIKE
    SQL Error 83Syntax error
    SQL Error 84Parser error <statement>
    SQL Error 85Incorrect number of columns in subquery for INSERT

    SOLID SQL Warnings

    Warning code Description
    SQL Warning 1ANSI X3.135-1989 compatibility: DEFAULT should be before constraints
    SQL Warning 2ANSI X3.135-1989 compatibility: illegal identifier '<identifier>'
    The length of the identifier exceeds 18 characters.
    SQL Warning 3Rdb compatibility: illegal identifier '<identifier>'
    The last character of the identifier is underscore ('_').
    SQL Warning 4ANSI X3.135-1989 compatibility: illegal literal '<literal>'
    You have used character 'e' instead of character 'E'. For example 1.234e-54
    SQL Warning 5Oracle compatibility: use ANY instead of SOME
    SQL Warning 6ANSI X3.135-1989 compatibility: token '!=' illegal, use '<>'
    SQL Warning 7ANSI X3.135-1989 compatibility: use DISTINCT instead of UNIQUE
    SQL Warning 8ANSI X3.135-1989 compatibility: syntax '+=' not allowed
    SQL Warning 9ANSI X3.135-1989 compatibility: CHECK in UPDATE not allowed
    SQL Warning 10ANSI X3.135-1989 compatibility: "identifier" syntax not allowed
    You have surrounded identifier with double quote characters.
    SQL Warning 11ANSI X3.135-1989 compatibility: multiple DISTINCTs not allowed
    SQL Warning 12ANSI X3.135-1989 compatibility: vector predicates not allowed
    You have used a row value constructor.
    SQL Warning 13ANSI X3.135-1989 compatibility: LEFT OUTER JOIN not allowed
    SQL Warning 14ANSI X3.135-1989 compatibility: AS <column id> not allowed
    SQL Warning 15ANSI X3.135-1989 compatibility: FOR READ ONLY/UPDATE not allowed
    SQL Warning 16ANSI X3.135-1989 compatibility: identifiers beginning with _ not allowed
    You have used identifier beginning with underscore ('_') character.
    SQL Warning 17ANSI X3.135-1989 compatibility: syntax <table>.* not allowed
    SQL Warning 18ANSI X3.135-1989 compatibility: syntax DATE '...' not allowed
    SQL Warning 19Reserved word '<reserved word>'
    SQL Warning 20ANSI X3.135-1989 compatibility: NULL not allowed in SELECT list
    SQL Warning 21Use '+' instead of '||'
    SQL Warning 22ANSI X3.135-1989 compatibility: UNIONs in VIEWs not allowed

    SOLID Database Errors

    Error codeDescription
    Database Error 10001 Key value is not found
    Internal error: a key value can not be found from the database index.
    Database Error 10002 Operation failed
    This is an internal error indicating that the index of the table accessed is in inconsistent state. Try to drop and create the index again to recover the error.
    Database Error 10004 Redefinition
    Unexpected failure occurred in the database engine.
    This error may also occur during recovery: either an index or a view has been redefined during recovery. The server is not able to do the recovery. Delete log files and start the server again.
    Database Error 10005 Unique constraint violation
    You have violated a unique constraint. This happens when you have tried to insert or update a column which has a unique constraint and the value inserted or updated is not unique.
    This may also occur when you create users, tables or roles having same names in separate transactions.
    Database Error 10006 Concurrency conflict, two transactions updated or deleted the same row
    Two separate transactions have modified a same row in the database simultaneously. This has resulted in a concurrency conflict.
    Database Error 10007 Transaction is not serialisable
    The transaction committed is not serialisable.
    Database Error 10010 No checkpoint in database
    This error occurs when the server has crashed in the middle of creating a new database. Delete the database and log files and try to create the database again.
    Database Error 10011 Database headers are corrupted
    The headers in the database are corrupted. This may be caused by a disk error or other system failure. Restore the database from the backup.
    Database Error 10012 Node split failed
    This is an internal error.
    Database Error 10013 Transaction is read-only
    You have tried to write inside a transaction that is set read-only. Remove the write operation or unset the read-only mode in the transaction.
    Database Error 10014 Resource is locked
    This error occurs when you are trying to use a key value in an index which has been concurrently dropped.
    Database Error 10016 Log file is corrupted
    One of the log files of the database is corrupted. You can not use these log files. Delete them and start the server again.
    Database Error 10017 Too long key value
    The maximum length of the key value has been exceeded. The maximum value is one third of the size of the index leaf.
    Database Error 10019 Backup is active
    You have tried to start a backup when a backup process is already in progress.
    Database Error 10020 Checkpoint creation is active
    You have tried to start a checkpoint when a checkpoint creation is already in progress.
    Database Error 10021 Failed to delete log file
    The deletion of a log file in making a backup has failed. Reasons for the failure can be:
    The log file has already been deleted from the operating system.
    The log file has a read-only attribute.
    Database Error 10023 Wrong log file, maybe the log file is from another database
    The log file in the database directory is from another SOLID Server database. Copy the correct log files to the database directory.
    Database Error 10024 Illegal backup directory
    The backup directory is either an empty string or a dot indicating that the backup will be created in the current directory.
    Database Error 10026 Transaction is timed out
    An idle transaction has exceeded the maximum idle transaction time. The transaction has been aborted.
    The maximum value is set in parameter AbortTimeOut in SRV section. The default value is 120 minutes.
    Database Error 10027 No active search
    Internal error.
    Database Error 10028 Referential integrity violation, foreign key values exist
    You tried to delete a row that is referenced from a foreign key.
    Database Error 10029 Referential integrity violation, referenced column values do not exist
    The definition of a foreign key does not uniquely identify a row in the referenced table.
    Database Error 10030 Backup directory 'directory name' does not exist
    Backup directory is not found. Check the name of the backup directory.
    Database Error 10031 Transaction detected a deadlock, transaction is rolled back
    Deadlock detected. If necessary, begin transaction again.
    Database Error 10032 Wrong database block size specified
    The block size of the database file differs from the blocksize given in the configuration file solid.ini.
    Database Error 10033 Primary key unique constraint violation
    Your primary key definition is not unique.
    Database Error 10034 Sequence name <sequence> conflicts with an existing entity
    Choose a unique name for a sequence. The specified name is already used.
    Database Error 10035 Sequence does not exist
    Check the name of the sequence.
    Database Error 10036 Data dictionary operation is active for accessed sequence
    Create or drop operation is active for the accessed sequence. Try again.
    Database Error 10037 Can not store sequence value, the target data type is illegal
    The valid target data types are INTEGER and BINARY.
    Database Error 10038 Illegal column value for descending index
    Corrupted data found in descending index. Drop the index and create it again.
    Database Error 10040 Log file write failure, probably the disk containing the log files is full
    Shut down the server and reserve more disk space for log files.
    Database Error 10041 Database is read-only
    Database Error 10042 Database index check failed, the database file is corrupted
    Database Error 10043 Database free block list corrupted, same block twice in free list
    Database Error 10044 Primary key can not contain blob attributes
    Database Error 10045 This database is a hot standby slave, the database is read only
    Database Error 10046 Operation failed, data dictionary operation is active
    Database Error 10047 Replicated transaction is aborted
    Database Error 10048 Replicated transaction contains schema changes, operation failed

    SOLID System Errors

    Error codeDescription
    System Error 11000 File open failure
    The server is unable to open the database file. Reason for the failure can be:
    The database file has been set read-only.
    You do not have rights to open the database file in write mode.
    Another SOLID Server is using the database file.
    Correct the error and try again.
    System Error 11001 File write failure
    Server is unable to write to the disk. The database files may have a read-only attribute set or you may not have rights to write to the disk. Add rights or unset read-only attribute and try again.
    System Error 11002 File write failed, disk full
    Server failed to write to the disk, because the disk is full. Free disk space or move the database file to another disk. You can also split the database file to several disks using the FileSpec_[1-N] parameter in IndexFile INDEXFILEsection.
    System Error 11003 File write failed, configuration exceeded
    Writing to the database file failed, because the maximum database file size set in FileSpec_[1-N] parameter is exceeded.
    System Error 11004 File read failure
    An error occurred reading a file. This may indicate a disk error in your system.
    System Error 11005 File read beyond end of file
    Internal error.
    System Error 11006 File read failed, illegal file address
    An error occurred reading a file. This may indicate a disk error in your system.
    System Error 11007 File lock failure
    The server failed to lock the database file. This error occurs in the Windows version, if you do not have SHARE.EXE loaded. To correct the failure:
    1. Exit Windows
    2. Load SHARE.EXE
    3. Delete the database file SOLID.DB and log files.
    4. Start Windows and launch SOLID Server.
    System Error 11008 File unlock failure
    Server failed to unlock a file.
    System Error 11009 File free block list corrupted
    Internal error.
    System Error 11010 Too long file name
    Filename specified in parameter FileSpec_[1-N] is too long. Change the name to a proper file name.
    System Error 11011 Duplicate file name specification
    Filename specified in parameter FileSpec_[1-N] is not unique. Change the name to a proper file name.
    System Error 11012 License information not found, exiting from SOLID Server
    Check the existence of your solid.lic file.
    System Error 11013 License information is corrupted
    Your solid.lic file has been corrupted.
    System Error 11014 Database age limit of evaluation license expired
    System Error 11015 Evaluation license expired
    System Error 11016 License is for different CPU architecture
    System Error 11017 License is for different OS environment
    System Error 11018 License is for different version of this OS
    System Error 11019 License is not valid for this server version
    System Error 11020 License information is corrupted
    System Error 11021 Problem with Your license, please contact SOLID Information Technology Ltd. immediately
    System Error 11022 Desktop license is only for local <protocol> communication, cannot use protocol <protocol> for listening

    SOLID Table Errors

    Error codeDescription
    Table Error 13001Illegal character constant <constant>
    An illegal character constant was found in the SQL statement.
    Table Error 13002Type CHAR not allowed for arithmetics
    You have entered a calculation having a character type constant. Character constants are not supported in arithmetics.
    Table Error 13003Aggregate function <function> not available for ordinary call
    Aggregate functions can not be used for ordinary function calls.
    Table Error 13004Illegal aggregate function <parameter> parameter
    An illegal parameter has been given to an aggregate function. Aggregate function parameters can only be column names or numbers.
    Table Error 13005SUM and AVG not supported for CHAR type
    Aggregate functions SUM and AVG are not supported for character type parameters.
    Table Error 13006SUM or AVG not supported for DATE type
    Aggregate functions SUM and AVG are not supported for date type parameters.
    Table Error 13007Function <function> is not defined
    The function you tried to use is not defined.
    Table Error 13009Division by zero
    A division by zero has occurred.
    Table Error 13011Table <table> does not exist
    You have referenced a table which does not exist or you do not have REFERENCES privilege on the table.
    Table Error 13013Table name <table> conflicts with an existing entity
    Choose a unique name for a table. The specified name is already used.
    Table Error 13014Index <index> does not exist
    You have referenced an index which does not exist.
    Table Error 13015Column <column> does not exist on table <table>
    You have referenced a column in a table which does not exist.
    Table Error 13016User does not exist
    You have referenced a user which does not exist.
    Table Error 13018Join table is not supported
    Joined tables are not supported in this version of SOLID Server.
    Table Error 13019Transaction savepoints are not supported
    Transaction savepoints are not supported in this version of SOLID Server.
    Table Error 13020Default values are not supported
    Default column values are not supported in this version of SOLID Server.
    Table Error 13021Foreign keys are not supported
    Foreign keys are not supported in this version of SOLID Server.
    Table Error 13022Descending keys are not supported
    Descending keys are not supported in this version of SOLID Server.
    Table Error 13023Schema is not supported
    Schema is not supported in this version of SOLID Server.
    Table Error 13025Update through a cursor with no current row
    You have tried to update using cursor, but you do not have current row in the cursor.
    Table Error 13026Delete through a cursor with no current row
    You have tried to delete using cursor, but you do not have current row in the cursor.
    Table Error 13028View <view> does not exist
    You have referenced a view which does not exist.
    Table Error 13029View name <view> conflicts with an existing entity
    Choose a unique name for a view. The specified name is already used.
    Table Error 13030No value specified for NOT NULL column <column>
    You have not specified a value for a column which is defined NOT NULL.
    Table Error 13031Data dictionary operation is active for accessed table or key
    You can not access the table or key, because a data dictionary operation is currently active. Try again after the data dictionary operation has completed.
    Table Error 13032Illegal type <type>
    You have tried to create a table with a column having an illegal type.
    Table Error 13033Illegal parameter <parameter> for type <type>
    The type of the parameter you entered is illegal in this column.
    Table Error 13034Illegal constant <constant>
    You have entered an illegal constant.
    Table Error 13035Illegal INTEGER constant <constant>
    You have entered an illegal integer type constant. Check the syntax of the statement and try again.
    Table Error 13036Illegal DECIMAL constant <constant>
    You have entered an illegal decimal type constant. Check the decimal number and try again.
    Table Error 13037Illegal DOUBLE PREC constant <constant>
    You have entered an illegal double precision type constant. Check the number and try again.
    Table Error 13038Illegal REAL constant <constant>
    You have entered an illegal real type constant. Check the real number and try again.
    Table Error 13039Illegal assignment
    You have tried to assign an illegal value for a column.
    Table Error 13040Aggregate <function> function is not defined
    The aggregate function you tried to use is not supported.
    Table Error 13041Type DATE not allowed for arithmetics
    DATE type columns or constants are not allowed in arithmetics.
    Table Error 13042Power arithmetic not allowed for NUMERIC and DECIMAL data type
    Decimal and numeric data types do not support power arithmetics.
    Table Error 13043Illegal date constant <constant>
    A date constant is illegal. The correct form for date constants is: YYYY-MM-DD.
    Table Error 13045Reference privileges are not supported
    Reference privileges are not supported in this version of SOLID Server.
    Table Error 13046Illegal user name <user>
    User name entered is not legal. A legal user name is at least 2 and at most 31 characters in length. A user name may contain characters from A to Z, numbers from 0 to 9 and underscore character '_'.
    Table Error 13047No privileges for operation
    You have no privileges for the attempted operation.
    Table Error 13048No privileges to grant privileges for table <table>
    You have no privileges to grant privileges for the table.
    Table Error 13049Column privileges cannot be granted WITH GRANT OPTION
    Granting column privileges WITH GRANT OPTION is not supported in this version of SOLID Server.
    Table Error 13050Too long constraint value
    Maximum constraint length has been exceeded. Maximum constraint length is 255 characters.
    Table Error 13051Illegal column name <column>
    You have tried to create a table with an illegal column name.
    Table Error 13052Illegal comparison operator <operator> for a pseudo column <column>
    You have tried to use an illegal comparison operator for a pseudo column. Legal comparison operators for pseudo columns are: equality '=' and non-equality '<>'.
    Table Error 13053Illegal data type for a pseudo column
    You have tried to use an illegal data type for a pseudo column. Data type of pseudo columns is BINARY.
    Table Error 13054Illegal pseudo column data, maybe data is not received using pseudo column
    You have tried to compare pseudo column data with non-pseudo column data. Pseudo column data can only be compared with data received from a pseudo column.
    Table Error 13055Update not allowed on pseudo column
    Updates are not allowed on pseudo columns.
    Table Error 13056Insert not allowed on pseudo column
    Inserts are not allowed on pseudo columns.
    Table Error 13057Index name <index> already exists
    You have tried to create an index, but an index with the same name already exists. Use another name for the index.
    Table Error 13058Constraint checks were not satisfied on column <column>
    Column has constraint checks which were not satisfied during an insert or update.
    Table Error 13059Reserved system name <name>
    You tried to use a name which is a reserved system name such as PUBLIC and SYS_ADMIN_ROLE.
    Table Error 13060User name <user> not found
    You tried to reference a user name which is not created.
    Table Error 13061Role name <role> not found
    You tried to reference a role name which is not created.
    Table Error 13062Admin option is not supported
    Admin option is not supported in this version of SOLID Server.
    Table Error 13063Name <name> already exists
    You tried to use a role or user which already exists. User names and role names must all be different i.e. you can not have a user named HOBBES and a role named HOBBES.
    Table Error 13064Not a valid user name <user>
    You tried to create an invalid user name. A valid user name has at least 2 characters and at most 31 characters.
    Table Error 13065Not a valid role name <role>
    You tried to create an invalid role name. A valid user name has at least 2 characters and at most 31 characters.
    Table Error 13066User <user> not found in role <role>
    You tried to revoke a role from a user and the user did not have that role.
    Table Error 13067Too short password
    You have entered a too short password. Password length must be at least 3 characters.
    Table Error 13068Shutdown is in progress
    You are unable to complete this operation, because server shutdown is in progress.
    Table Error 13070Numerical overflow
    A numerical overflow has occurred. Check the values and types of numerical variables.
    Table Error 13071Numerical underflow
    A numerical underflow has occurred. Check the values and types of numerical variables.
    Table Error 13072Numerical value out of range
    A numerical value is out of range. Check the values and types of numerical variables.
    Table Error 13073Math error
    A mathematical error has occurred. Check the mathematics in the statement and try again.
    Table Error 13074Illegal password
    You have tried to enter an illegal password.
    Table Error 13075Illegal role name <role>
    You have tried to enter an illegal role name. A legal role name is at least 2 and at most 31 characters in length. A user role may contain characters from A to Z, numbers from 0 to 9 and underscore character '_'.
    Table Error 13076NOT NULL must not be specified for added column <column>
    You have tried to add a column to a table using ALTER TABLE statement. NOT NULL constraint is not allowed in ALTER TABLE statement when the table already includes data.
    Table Error 13077Last column can not be dropped
    You have tried to drop the final column in a table. This is not allowed; at least one column must remain in the table.
    Table Error 13078Column already exist on table
    You have tried to create a column which already exists in a table.
    Table Error 13079Illegal search constraint
    Check the search condition. There may be mismatch between data types.
    Table Error 13080Incompatible types, can not modify column <column> from type <type> to type <type>
    You have tried to modify column to a data type that is incompatible with the original definition, such as VARCHAR and INTEGER.
    Table Error 13081Descending keys are not supported for binary columns
    You can not define descending key for a binary column.
    Table Error 13082Function <function>: parameter * not supported
    You can not use parameter star (*) with ODBC Scalar Functions.
    Table Error 13083Function <function>: Too few parameters
    The function expects more parameters. Check the function call.
    Table Error 13084Function <function>: Too many parameters
    The function expects fewer parameters. Check the function call.
    Table Error 13085Function <function>: Run-time failure
    An error was detected during the execution of the function. Check the parameters.
    Table Error 13086Function <function>: type mismatch in parameter <parameter number>
    A erroneous type of parameter detected in the given position of the function call. Check the function call.
    Table Error 13087Function <function>: illegal value in parameter <parameter number>
    An illegal value for a parameter detected in the given position of the function call. Check the function call.
    Table Error 13090Foreign key column <column> data type not compatible with referenced column data type
    References specification error. Check that the column data type are compatible between referencing and referenced tables.
    Table Error 13091Foreign key does not match to the primary key or unique constraint of the referenced table
    References specification error. Check that the column data type are compatible between referencing and referenced tables and that the foreign key is unique for the referenced table.
    Table Error 13092Event name <event> conflicts with an existing entity
    Choose a unique name for an event. The specified name is already used.
    Table Error 13093Event <event>does not exist
    You referenced to a nonexistent event. Check the name of event.
    Table Error 13094Duplicate column <column> in primary key definition
    Duplicate columns are not allowed in a table-constraint-definition. Remove duplicate columns from the definition.
    Table Error 13095Duplicate column <column> in unique constraint definition
    Duplicate columns are not allowed in a table-constraint-definition. Remove duplicate columns from the definition.
    Table Error 13096Duplicate column <column> in index definition
    Duplicate columns are not allowed in CREATE INDEX statement. Remove duplicate columns.
    Table Error 13097Primary key columns must be NOT NULL
    Error in a column-constraint-definition. Define primary key columns NOT NULL. For example: CREATE TABLE DEPT (DEPTNO INTEGER NOT NULL, DNAME VARCHAR, PRIMARY KEY(DEPTNO));
    Table Error 13098Unique constraint columns must be NOT NULL
    Error in a column-constraint-definition. Define unique columns NOT NULL. For example: CREATE TABLE DEPT4 (DEPTNO INTEGER NOT NULL, DNAME VARCHAR, UNIQUE(DEPTNO) );
    Table Error 13099No REFERENCES privileges to referenced columns in table <table>
    You do not have privileges to reference to the table.
    Table Error 13100Illegal table mode combination
    You have defined illegal combination of locking. Check locking type of tables.
    Table Error 13101Only execute privileges can be used with procedures
    Table Error 13102Execute privileges can be used only with procedures
    Table Error 13103Illegal grant or revoke operation
    Table Error 13104Sequence name <sequence> conflicts with an existing entity
    Choose a unique name for a sequence. The specified name is already used.
    Table Error 13105Sequence <sequence>does not exist
    You referenced to a nonexistent sequence. Check the name of sequence.
    Table Error 13106Foreign key reference exists to table <table>
    Table Error 13107Illegal set operation
    You tried to execute a non-existent set operation.

    SOLID Server Errors

    Error codeDescription
    Server Error 14501 Operation failed
    This error occurs when a timed command fails. Check the arguments of timed commands.
    Server Error 14502 RPC parameter is invalid
    A network error has occurred.
    Server Error 14503 Communication error
    A communication error has occurred.
    Server Error 14504 Duplicate cursor name <cursor>
    You have tried to declare a cursor with a cursor name which is already in use. Use another name.
    Server Error 14505 Connect failed, illegal user name or password
    You have entered either a user name or a password that is not valid.
    Server Error 14506 Server is closed, no new connections allowed
    You have tried to connect to a closed server. Connecting was aborted.
    Server Error 14507 Maximum number of licensed user connections exceeded
    You have tried to connect to a server which has all licenses currently in use. Connecting was aborted.
    Server Error 14508 The operation has timed out
    You have launched an operation that has been aborted.
    Server Error 14509 Version mismatch
    A version mismatch has occurred. The client and server are different versions. Use same versions in the client and the server.
    Server Error 14510 Communication write operation failed
    A write operation failed. This indicates a network problem. Check your network settings.
    Server Error 14511 Communication read operation failed
    A read operation failed. This indicates a network problem. Check your network settings.
    Server Error 14512 There are users logged to the server
    You can not shutdown the server now. There are users connected to the server.
    Server Error 14513 Backup process is active
    You can not shutdown the server now. The backup process is active
    Server Error 14514 Checkpoint creation is active
    You can not shutdown the server now. The checkpoint creation is active.
    Server Error 14515 Invalid user id
    You tried to drop a user, but the user id is not logged in to the server.
    Server Error 14516 Invalid user name
    You tried to drop a user, but the user name is not logged in to the server.
    Server Error 14517 Someone has updated the at commands at the same time, changes not saved
    You tried to update timed commands at the same time another user was doing the same. Your changes will not be saved.
    Server Error 14518 Connection to the server is broken, connection lost
    Possible network error. Reconnect to the server.
    Server Error 14519 The user was thrown out from the server, connection lost
    Possible network error.
    Server Error 14520 Server is hotstandby slave, no connections are allowed
    Server Error 14521 Failed to create a new thread for the client
    Server Error 14522 HotStandby sync directory not specified
    Server Error 14523 HotStandby switch is already active
    Server Error 14524 HotStandby database has a different time stamp

    SOLID Communication Errors

    Error codeDescription
    Communication Error 21300 Protocol <protocol> is not supported
    Protocol is not supported.
    Communication Error 21301 Cannot load the dynamic link library <library> or one of its components
    The server was unable to load the dynamic link library or a component needed by this library. Check the existence of necessary libraries and components.
    Communication Error 21302 Wrong version of dynamic link library <library>
    The version of this library is wrong. Update this library to a newer version.
    Communication Error 21303 Network adapter card is missing or needed <protocol> software is not running
    The network adapter card is missing or not functioning.
    Communication Error 21304 Out of <protocol> resources
    The network protocol is out of resources. Increase the protocols resources in the operating system.
    Communication Error 21305 An empty or incomplete network name was specified
    The network name specified is not legal. Check the network name.
    Communication Error 21306 Server <network name> not found, connection failed
    The server was not found. 1) Check that the server is running. 2) Check that the network name is valid. 3) Check that the server is listening given network name.
    Communication Error 21307 Invalid connect info <network name>
    The network name given as the connect info is not legal. Check the network name.
    Communication Error 21308 Connection is broken (<protocol> <read/write> operation failed with code <internal code>)
    The connection using the protocol is broken. Either a read or a write operation has failed with and internal error code <internal code>.
    Communication Error 21309 Failed to accept a new client connection, out of <protocol> resources
    The server was not able to establish a new client connection. The protocol is out of resources. Increase the protocol's resources in the operating system.
    Communication Error 21310 Failed to accept a new client connection, listening of <network name> interrupted
    The server was not able to establish a new client connection. The listening has been interrupted.
    Communication Error 21311 Failed to start a selecting thread for <network name>
    A thread selection has failed for <network name>.
    Communication Error 21312 Listening info <network name> already specified for this server
    A network name has already been specified for this server. A server can not use a same network name more than once.
    Communication Error 21313 Already listening with the network name <network name>
    You have tried to add a network name to a server when it is already listening with that network name. A server can not use a same network name more than once.
    Communication Error 21314 Cannot start listening, network name <network name> is used by another process
    The server can not start listening with the given network name. Another process in this computer is using the same network name.
    Communication Error 21315 Cannot start listening, invalid listening info <network name>
    The server can not start listening with the given listening info. The given network name is invalid. Check the syntax of the network name.
    Communication Error 21316 Cannot stop the listening of <network name>. There are clients connected
    You can not stop listening of this network name. There are clients connected to this server using this network name.
    Communication Error 21317 Failed to save the listen information into the configuration file
    The server failed to save this listening information to the configuration file. Check the file access rights and format of the configuration file.
    Communication Error 21318 Operation failed because of an unusual <protocol> return code <code>
    Possible network error. Create connection again.
    Communication Error 21319 RPC request contained an illegal version number
    Either the message was corrupted or there may be a mismatch between server and client versions.
    Communication Error 21320 Called RPC service is not supported in the server
    There maybe a mismatch between server and client versions.
    Communication Error 21321 Protocol %s is not valid, try using switch '-a' for specifying another adapter id instead of %d
    This is returned if the NetBIOS lan adapter id given in listen/connect string is not valid.
    Communication Error 21322 The host machine given in connect info '%s' was not found
    This is returned in clients if the host machine name given in connect info is not valid.
    Communication Error 21323 Protocol <protocol> can not be used for listening in this environment.
    This message is displayed if the server end communication using specified protocol is not supported.
    Communication Error 21324 The process does not have the privilege to create a mailbox

    SOLID Communication Warnings

    Error codeDescription
    Warning Code 21100 Illegal value <value> for configuration parameter <parameter>, using default
    An illegal value was given to the parameter <parameter>. The server will use a default value for this parameter.
    Warning Code 21101 Invalid protocol definition <protocol> in configuration file
    The protocol is defined illegally in the configuration file. Check the syntax of the definition.

    SOLID Procedure Errors

    Error codeDescription
    Procedure Error 23001 Undefined symbol <symbol>
    You have used a symbol that has not been defined in a procedure definition.
    Procedure Error 23002 Undefined cursor <cursor>
    You have used a cursor that has not been defined in a procedure definition.
    Procedure Error 23003 Illegal SQL operation <operation>
    Procedure Error 23004 Syntax error: parse error, line <line number>
    Check the syntax of your procedure.
    Procedure Error 23005 Procedure <procedure> not found
    Procedure Error 23006 Wrong number of parameters for procedure <procedure>
    Procedure Error 23007 Procedure name <value> conflicts with an existing entity.
    Choose a unique name for a procedure. The specified name is already used.
    Procedure Error 23009 Event <event> does not exist, line <line number>
    Procedure Error 23010 Incompatible event <event> parameter type, line <line number>
    Procedure Error 23011 Wrong number of parameter for event <event>, line <line number>
    Procedure Error 23012 Duplicate wait for event <event>, line <line number>
    Procedure Error 23013 Undefined sequence <sequence>
    Procedure Error 23014 Duplicate sequence name <sequence>
    Procedure Error 23015 Sequence <sequence> not found
    Procedure Error 23016 Incompatible variable type in call to sequence <sequence>, line <line number>
    Procedure Error 23017 Duplicate symbol <symbol>
    You have duplicate definitions for a symbol.
    Procedure Error 23018 Procedure owner <owner>not found
    Procedure Error 23019 Duplicate cursor name '<cursor>'
    Procedure Error 23501 Cursor <cursor> is not open
    Procedure Error 23502 Illegal number of columns in EXECUTE ... <procedure> in cursor <cursor>
    Procedure Error 23503 Previous SQL operation before <operation> failed in cursor <cursor>
    Procedure Error 23504 Cursor <cursor> is not executed
    Procedure Error 23505 Cursor <cursor> is not a SELECT statement
    Procedure Error 23506 End of table in cursor <cursor>
    Procedure Error 23507 Illegal type conversion in cursor <cursor> from type <data type> to type <data type>
    Procedure Error 23508 Illegal assignment, line <line number>
    Procedure Error 23509 In <procedure> line <line number> Stmt <statement> was not in error state in RETURN SQLERROR OF ...
    Procedure Error 23510 In <procedure> line <line number> Transaction cannot be set read only, because it has written already
    Procedure Error 23511 In <procedure> line <line number> USING part is missing for dynamic parameters for <procedure>
    Procedure Error 23512 In <procedure> line <line number> USING list is too short for <procedure>'

    SOLID Sorter Errors

    Error codeDescription
    Sorter Error 24001 Sort failed due to insufficient configured TmpDir space
    Sorter Error 24002 Sort failed due to insufficient physical TmpDir space
    Sorter Error 24003 Sort failed due to insufficient sort buffer space
    Sorter Error 24004 Sort failed due to too long row (internal failure)
    Sorter Error 24005 Sort failed due to I/O error

    APPENDIX B CONFIGURATION PARAMETERS

    About Configuration Parameters

    By managing the parameters of your SOLID Server, you can modify the environment, performance, and operation of the server.

    When SOLID Server is started, it attempts to open the configuration file solid.ini in the current directoryconfiguration file. The configuration values for the server parameters are included in this file. If the file does not exist, SOLID Server will use the default settings for the parameters. Also, if a value for a parameter is not set in the solid.ini file, SOLID Server will use a default value for the parameter. The default values depend on the operating system you are using.

    Generally, the default settings offer the best performance and operability, but in some special cases modifying a parameter will improve performance. You can change the parameters either by using the SOLID Remote Control parameter page or by editing the configuration file solid.ini. The configuration file format is similar to the format found in MS Windows and OS/2.

    General Section

    [General]Description Default
    MaxOpenFilesthe maximum number of files kept concurrently open during SOLID Server sessions OS depend.
    BackupDirectorythe directory for backup files No default
    BackupCopyLogif set to yes, backup operation will copy log files to the backup directory yes
    BackupDeleteLogif set to yes, old log files will be deleted after backup operation yes
    BackupCopyIniFileif set to yes, solid.ini file will be copied to the backup directory yes
    Checkpoint
    Interval
    the number of inserts made in the database that causes automatic checkpoint creation 5000
    MergeIntervalthe number of index inserts made in the database that causes the merge process to start Cache size depend.
    Readonlyif set to yes, database is set to read-only mode no
    LongSequential
    SearchLimit
    the number of sequential fetches after which search is treated as long sequential search 500
    SearchBuffer
    Limit
    the maximum percentage of search buffers from the total buffered memory reserved for open cursors 50
    Transaction
    HashSize
    the hash table size for incomplete transactions Cache size depend.
    UseIOThreadsif set to yes, IO threads are used; if set to no, IO threads are not used no

    Index and BLOb File Sections

    [IndexFile] [BLOBFile_1] Description Default
    FileSpec_[1-N]the file name followed with maximum size of that database file, for example:
    c:\sol1.db 10000
    solid.db
    BlockSizethe block size of the index file in bytes; use power of 2 kb: minimum 2048, maximum 16384 8192
    CacheSizethe size of database cache memory for the server in bytes; the minimum 512 kb OS depend.
    ExtendIncrementthe number of blocks that is allocated at one time when SOLID Server needs to allocate more space for the database file 10
    ReadAheadsets the number of prefetched index leafs during long sequential searches 4
    PreFlushPercentPercentage of page buffer which is kept clean by preflush thread

    Logging Section

    [Logging]Description Default
    LogEnabledwhether logging is enabled or not yes
    LogWriteModethe supported log write methods are:

    0: the ping-pong method

    1: the group commit method

    2: the overwriting method

    3: the lazy write method

    see chapter Database Maintenance for more specific information

    0
    BlockSizethe block size of log files 2048
    CommitMaxWaitthe maximum wait time for a COMMIT statement in milliseconds when using group commit method for log writing (LogWriteMode = 1) 200
    MinSplitSizewhen this file size is reached, logging will be continued to the following log file after a the next checkpoint 1 MB
    FileNameTemplatethe path and naming convention used when creating log files; template characters are replaced with sequential numbering; for example:
    c:\solid\log\sol#####.log
    sol#####.log
    DigitTemplate
    Char
    the template character that will be replaced in the name template of the log file #

    Communication Section

    [Com]Description Default
    Listenthe network name for server; the protocol and name that SOLID Server uses when starting listening to the network OS depend.
    Connectthe network name for client; the protocol and name that a SOLID Server client uses for server connection; in a Windows environment ODBC Data Source Name overrides the value of this parameter OS depend.
    MaxPhysMsgLenthe maximum length of a single physical network message in bytes; longer network messages will be split into smaller messages of this size OS depend.
    ReadBufSizethe buffer size in bytes for the data read from the network OS depend.
    WriteBufSizethe buffer size in bytes for the data written into the network OS depend.
    AllowYieldWindows only; controls whether communication is allowed to yield control to other running tasks or not no
    SelectThreadif set to yes a separate selector thread is started for every listening session OS depend.
    Traceif parameter set to yes, trace information on network messages is written to a file specified with the TraceFile parameter no
    TraceFileif parameter Trace is set to yes, trace information on network messages is written to a file specified with this parameter soltrace.out

    Server Section

    [Srv]Description Default
    RowsPerMessagethe number of rows returned from the server in one network message 10
    ConnectTimeOutspecifies the continuous idle time in minutes after that an connection is dropped 480
    AbortTimeOutspecifies the time in minutes after that an idle transaction is aborted 120
    Threadsthe number of threads used for database access in SOLID Server OS depend.
    Echoif set to yes contents of solmsg.out file are displayed also at the server's command window no
    ReadThreadModepossible values are 0, 1 and 2, the meanings are following
    0: network reads are done in database tasks
    1: network reads are done in the server thread
    2: network reads are done in separate read threads
    OS depend.
    Namethe informal name of the server, equivalent to the -n command line option
    AllowConnectif set to yes only connections from Remote Control are allowed no
    MessageLogSizedefines the maximum size of the solmsg.out file in bytes 100 000

    SQL Section

    [SQL]Description Default
    Infoset the level of informational messages [0-9] printed from the server; information is written into SOLTRACE.OUT in the server directory (0=no info, 9=all info) 0
    SortArraySizethe size of the array that SQL uses when ordering result set; for optimal performance this should be as big as the biggest retrieved result set that cannot be ordered by key values; for large sotrs use external sorter OS depend.
    JoinPathSpanthe depth of the SQL parse tree that SQL optimiser will span through when selecting the correct joining strategy 3
    ProcedureCachethe size of cache memory for parsed procedures in number of procedures 5

    Sorter Section

    [Sorter]Description Default
    MaxCacheUse
    Percent
    maximum percentage of cache pages used for sorting; range from 10% to 50%
    MaxMemPerSortmaximum memory available in bytes for one sort
    MaxFilesTotalmaximum number of files used for sorting
    TmpDir_[1-N]name of the directory that contains temporary files created during sorting No default

    APPENDIX C DATA TYPES

    Supported Data Types in SOLID Server

    The following abbreviations used in the following tables:
    Abbreviation Description
    DEFLENthe defined length of the column;
    e.g. for CHAR(24) it is, of course, 24
    DEFDIGthe defined maximum number of digits;
    e.g. for NUMERIC(10,3) it is 10
    DEFDECthe defined number of digits to the right of the decimal point
    MAXLENthe maximum length of column
    NAnot applicable

    Character Data Types

    Data typeRange/
    Size
    PrecisionScale LengthDisplay size
    CHARno limit DEFLENNA DEFLENDEFLEN
    VARCHARno limit** DEFLENNA DEFLENDEFLEN
    LONG VARCHARno limit MAXLENNA MAXLENMAXLEN
    ** no explicit limit, default is 254

    Numeric Data Types

    Data typeRange/
    size
    PrecisionScale LengthDisplay size
    DECIMAL3.6e16 16DEFDEC DEFDIG+2precision + 2
    NUMERIC3.6e16 16DEFDEC DEFDIG+2precision + 2
    TINYINT[-128, 127] 30 14
    SMALLINT[-32768, 32767] 50 26
    INTEGER[-2^31, 2^31 -1] 100 411
    REAL1.7014117
    e38
    7NA 413
    FLOAT8.9884657
    e307
    15NA 822
    DOUBLE PRECISION8.9884657
    e307
    15NA 822

    Binary Data Types

    Data typeRange/
    size
    PrecisionScale LengthDisplay size
    BINARYno limit DEFLENNA DEFLENDEFLEN x 2
    VARBINARYno limit** DEFLENNA DEFLENDEFLEN x 2
    LONG VARBINARYno limit MAXLENNA MAXLENMAXLEN x 2
    ** no explicit limit, default is 254

    Date Data Type

    Data typeRange/
    size
    PrecisionScale LengthDisplay size
    DATEno limit 10NA 610

    Time Data Type

    Data typeRange/
    size
    PrecisionScale LengthDisplay size
    TIMEno limit 8NA 68

    Timestamp Data Type

    Data typeRange/
    size
    PrecisionScale LengthDisplay size
    TIMESTAMPno limit 169 1619/29*
    * size is 29 with a decimal fraction part

    The Smallest Possible Non-zero Numbers

    Data type Value
    DOUBLE2.2250738585072014e-308
    REAL1.175494351e-38

    Description of Different Column Values in the Tables

    The range of a numeric column refers to the minimum and maximum values the column can store. The size of non-numeric columns refers to the maximum length of data that can be stored in the column of that data type.

    The precision of a numeric column refers to the maximum number of digits used by the data type of the column. The precision of a non-numeric column refers to the defined length of the column.

    The scale of a numeric column refers to the maximum number of digits to the right of the decimal point. Note that for the approximate floating point number columns, the scale is undefined, since the number of digits to the right of the decimal point is not fixed.

    The length of a column is the maximum number of bytes returned to the application when data is transferred to its default C type. For character data, the length does not include the null termination byte. Note that the length of a column may differ from the number of bytes needed to store the data on the data source.

    The display size of a column is the maximum number of bytes needed to display data in character form.

    APPENDIX D SOLID SQL SYNTAX

    About SOLID SQL Syntax

    The SOLID Server SQL syntax is based on the ANSI X3.135-1989 level 2 standard including important ANSI X3.135-1992 (SQL2) extensions. User and role management services missing from previous standards are based on the ANSI SQL3 draft.

    This appendix presents a simplified description of the most common SQL statements including some examples. For the full description of the SOLID SQL API, refer to the SOLID SQL API Help file. The same information is included in the SOLID Server Programmer's Guide and the SOLID Server Programmer's Reference.

    The description syntax uses these conversions:

  • SQL keywords appear in all UPPERCASE letters
  • syntax elements are specified in lowercase
  • syntax elements specified in lowercase italics are explained in the end of this appendix
  • the notation ... indicates that elements can be repeated
  • vertical bars (|) indicates a choice between two or more alternative syntax elements
  • square brackets ([ ]) indicate an optional syntax element
  • braces ({ }) indicate a choice among required syntax elements
  • ADMIN COMMAND

    ADMIN COMMAND 'command-name'
    command-name ::= EXIT | HELP | SHUTDOWN | OPEN | 
       CLOSE | THROWOUT | USERLIST | MAKECP | BACKUP | 
       BACKUPLIST | STATUS | REPORT | MESSAGES | 
       MONITOR | VERSION | ERRORCODE | HOTSTANDBY
    

    Usage

    This SQL extension executes administrator commands. Syntax for the extension is

    ADMIN COMMAND 'command-name'
    

    where command-name is a teletype solcon command string. The result set contains two columns: RC INTEGER and TEXT VARCHAR(254). Integer column RC is a command return code (0 if success), varchar column TEXT is the command reply. The TEXT field contains same lines that a displayed on teletype solcon screen, one line per one result row.

    Example

    ADMIN COMMAND 'USERLIST';
    

    ALTER TABLE

    ALTER TABLE base-table-name
      {ADD [COLUMN] column-identifier data-type |
       DROP [COLUMN] column-identifier |
       RENAME [COLUMN]
          column-identifier column-identifier |
       MODIFY [COLUMN]
          column-identifier data-type} |
       SET {OPTIMISTIC | PESSIMISTIC}
    

    Usage

    The structure of a table may be modified through the ALTER TABLE statement. Within the context of this statement, columns may be added, modified, or removed.

    Individual tables can be set to optimistic or pessimistic with command ALTER TABLE base-table-name SET {OPTIMISTIC | PESSIMISTIC}. By default, all tables are optimistic. A database wide default can be set in the configuration file in General section with parameter Pessimistic=yes.

    If transaction early validate is used, update and delete operations use locks for the early validation. Read operations do not lock, but update and delete operations lock the updated or deleted row.

    Example

    ALTER TABLE TEST ADD X INTEGER;
    ALTER TABLE TEST RENAME COLUMN X Y;
    ALTER TABLE TEST MODIFY COLUMN X SMALLINT;
    ALTER TABLE TEST DROP COLUMN X;
    

    ALTER USER

    ALTER USER user-name IDENTIFIED BY password
    

    Usage

    The password of a user may be modified through the ALTER USER statement.

    Example

    ALTER USER MANAGER IDENTIFIED BY O2CPTG;
    

    CALL

    CALL procedure-name [parameter ...]
    

    Usage

    Stored procedures are called with statement CALL.

    Example

    CALL proctest;
    

    COMMIT

    COMMIT WORK
    

    Usage

    The changes made in the database are made permanent by COMMIT statement. It terminates the transaction.

    Example

    COMMIT WORK;
    

    CREATE EVENT

    CREATE EVENT event-name
       [(parameter-definition
        [, parameter-definition ...])]
    

    Usage

    Event alerts are used to signal an event in the database. Events are simple objects with a name. The use of event alerts removes resource consuming database polling from applications.

    An event object is created with SQL statement

    CREATE EVENT event-name [parameter-list]

    The name can be any user specified alphanumeric string. The parameter list specifies parameter names and parameter types. The parameter types are normal SQL types.

    Events are dropped with SQL statement

    DROP EVENT event-name

    Events are generated and waited inside stored procedures. Special stored procedure statement is used for event generation and waiting.

    The event is generated with stored procedure statement

    POST EVENT event-name [parameters]

    Event parameters must be local variables or parameters in the stored procedure where the event is posted. All clients that are waiting for the posted event will receive the event.

    Event is waited using WAIT EVENT construct in a stored procedure:

    wait-event-statement ::=
    WAIT EVENT
    [event-specification ...]
    END WAIT

    event-specification ::=
    WHEN event-name (parameters) BEGIN
    statements
    END EVENT

    Example of a procedure that waits events:

    create procedure "event-wait(i1 integer)
    returns (result varchar)
    begin
    declare i integer;
    declare c char(4);

    i := 0;

    wait event
    when test1 begin
    result := 'event1';
    return;
    end event

    when test2(i) begin
    end event

    when test3(i, c) begin
    end event
    end wait

    if i <> 0 then
    result := 'if';
    post event test1;
    else
    result := 'else';
    post event test2(i);
    post event test3(i, c);
    end if
    end";

    The creator of an event or the database administrator can grant and revoke access rights to an event to users and roles. Select access right gives wait access to an event. Insert access right gives raise access to an event.

    Example

    CREATE EVENT ALERT1(I INTEGER, C CHAR(4));
    

    CREATE INDEX

    CREATE [UNIQUE] INDEX index-name
       ON base-table-name
          (column-identifier [ASC | DESC]
           [, column-identifier [ASC | DESC]] ...)
    

    Usage

    Creates an index for a table based on the given columns. Keyword UNIQUE specifies that columns being indexed must contain unique values. Keywords ASC and DESC specify whether the given columns should be indexed in ascending or descending order. If not specified ascending order is used.

    Example

    CREATE UNIQUE INDEX UX_TEST ON TEST (I);
    CREATE INDEX X_TEST ON TEST (I, J);
    

    CREATE PROCEDURE

    CREATE PROCEDURE procedure-name
       [(parameter-definition 
          [, parameter-definition ...])]
       [RETURNS (parameter-definition 
          [, parameter-definition ...])]
       BEGIN procedure-body END;
    parameter-definition ::= parameter-name data-type
    procedure-body ::= [declare-statement; ...]
       procedure-statement; [procedure-statement; ...] 
    declare-statement ::= DECLARE variable-name
       data-type
    procedure-statement ::= prepare-statement |
       exec-statement | fetch-statement | 
       control-statement
    prepare-statement ::= EXEC SQL PREPARE 
       cursor-name sql-statement
    execute-statement ::=
       EXEC SQL EXECUTE
          cursor-name 
          [USING (variable [, variable ...])]
          [INTO (variable [, variable ...])] |
       EXEC SQL [COMMIT | ROLLBACK] WORK |
       EXEC SQL SET TRANSACTION (READ ONLY | READ WRITE)
    fetch-statement ::= EXEC SQL FETCH cursor-name
    control-statement ::=
       SET variable-name = value |
       variable-name := values |
       WHILE expression 
          LOOP procedure-statement... END LOOP |
       LEAVE |
       IF expression THEN procedure-statement ...
          [ ELSEIF procedure-statement ... THEN] ...
          ELSE procedure-statement ... END IF |
       RETURN | RETURN SQLERROR OF cursor-name
    

    Usage

    Stored procedures are simple programs, or procedures, that are executed in the server. The user can create a procedure that contains several SQL statements or a whole transaction, and execute it with a single call statement. Usage of stored procedures reduces network traffic and allows more strict control to access rights and database operations.

    Procedures are created with statement

    CREATE PROCEDURE name body

    and dropped with statement

    DROP PROCEDURE name

    Procedures are called with statement

    CALL name [parameter ...]

    Procedures can take several input parameters and return a single row as a result. Result row is built from specified output parameters. Procedures are thus used in ODBC in the same way as SQL SELECT statement.

    Procedures are owned by the creator of the procedure. Specified access rights can be granted to other users. The procedure has the creator's access rights to database objects when it is run.

    The stored procedure syntax is a proprietary syntax modeled from SQL3 specifications and dynamic SQL. Procedure contains control statements and SQL statement.

    The following control statements are available in the procedures:
    Control statement Description
    declare variable-name data-type Declares a variable with given SQL type (e.g. CHAR(10)).
    begin statement-list end Marks beginning and end of the procedure body.
    set variable = expression Assigns a value to a variable. The value can be either a literal value (e.g. 10 or 'text') or another variable. Parameters are considered as normal variables.
    variable := expression Alternate syntax for assigning values to variables.
    while
    expr
    loop
    statement-list
    end loop
    Loops while expression is true.
    leaveLeaves the innermost while loop and continues from the next statement after end loop.
    if
    expr
    then
    statement-list1
    else
    statement-list2
    end if
    Executes statements-list1 if expression expr is true, otherwise executes statement-list2.
    if
    expr1
    then
    statement-list1
    elseif
    expr2
    then
    statement-list2
    end if
    If expr1 is true, executes statement-list1. If expr2 is true, executes statement-list2. The statement can optionally contain multiple elseif statements and also an else statement.

    All SQL DML and DDL statements can be used in procedures. Thus, the procedure can e.g. create tables or commit a transaction. Each SQL statement in the procedure is atomic.

    The SQL statements are first prepared with statement

    EXEC SQL PREPARE cursor SQL-statement
    

    The cursor specification is a cursor name that must be given. It can be any unique cursor name inside the transaction. Note that if the procedure is not a complete transaction, other open cursors outside the procedure may have conflicting cursor names.

    The SQL statement is executed with statement

    EXEC SQL EXECUTE cursor [opt-using ] [opt-into ]
    

    The optional opt-using specification has a syntax

    USING (variable-list)
    

    where variable-list contains a list of procedure variables or parameters separated by a comma. These variables are input parameters for the SQL statement. The SQL input parameters are marked with the standard question mark syntax in prepare statement. If the SQL statement has no input parameters, the USING specification is ignored.

    The optional opt-into specification has a syntax

    INTO (variable-list)
    

    where variable-list contains those variables where the column values of SQL SELECT statement are stored. The INTO specification is effective only for SQL SELECT statements.

    Rows are fetched with statement

    EXEC SQL FETCH cursor
    

    If the fetch completed successfully, the column values are stored into user bound variable.

    The result of each EXEC SQL statement executed inside a procedure body is stored into variable SQLSUCCESS. This variable is automatically generated for every procedure. If the previous SQL statement was successful, a value one is stored into SQLSUCCESS. After a failed SQL statement, a value zero is stored into SQLSUCCESS.

    Example

    create procedure "test2(tableid integer) 
       returns (cnt integer)
    begin
       exec sql prepare c1 select count(*) from
          sys_tables where id > ?;
       exec sql execute c1 using (tableid) into 
          (cnt);
       exec sql fetch c1;
    end";
    

    CREATE ROLE

    CREATE ROLE role-name
    

    Usage

    Creates a new user role.

    Example

    CREATE ROLE GUEST_USERS;
    

    CREATE SEQUENCE

    CREATE [DENSE] SEQUENCE sequence-name
    

    Usage

    Sequence object is a an object that is used to get sequence numbers.

    Using dense sequence guarantees that there are no holes in the sequence numbers. The sequence number allocation is bound to the current transaction. If the transaction rolls back, also the sequence number allocations are rolled back. The drawback of dense sequences is that the sequence is locked out from other transactions until the current transaction ends.

    Using sparse sequence guarantees uniqueness of the returned values, but they are not bound to the current transaction. If a transaction allocates a sparse sequence number and later rolls back, the sequence number is simply lost.

    The advantage of using sequence object instead of separate table is that the sequence object is specifically fine tuned for fast execution and requires less overhead than normal update statements.

    Sequences are accessed from stored procedures. The current sequence value can be retrieved using the following stored procedure statement:

    EXEC SEQUENCE sequence-name.CURRENT INTO variable

    The new sequence value can be retrieved using the following stored procedure statement:

    EXEC SEQUENCE sequence-name.NEXT INTO variable

    Select access rights are required to retrieve the current sequence value. Update access rights are required to allocate new sequence values. These access rights are granted and revoked in the same way as table access rights.

    Example

    CREATE DENSE SEQUENCE SEQ1;
    

    CREATE TABLE

    CREATE TABLE base-table-name
       (column-element [, column-element] ...)
    column-element ::= column-definition |
       table-constraint-definition
    column-definition ::= column-identifier
       data-type
          [column-constraint-definition
             [column-constraint-definition] ...]
    column-constraint-definition ::=
       NOT NULL | NOT NULL UNIQUE |
       NOT NULL PRIMARY KEY | CHECK (check-condition)
    table-constraint-definition ::=
       UNIQUE (column-identifier
          [, column-identifier] ...) |
       PRIMARY KEY (column-identifier
          [, column-identifier] ...) |
       CHECK (check-condition) |
       FOREIGN KEY (column-identifier
          [, column-identifier] ...)
          REFERENCES table-name
           (column-identifier [, column-identifier] ...)
    

    Usage

    Tables are created through the CREATE TABLE statement. The CREATE TABLE statement requires a list of the columns created, the data types, and, if applicable, sizes of values within each column, in addition to other related alternatives (such as whether or not null values are permitted).

    Example

    CREATE TABLE DEPT (DEPTNO INTEGER NOT NULL, DNAME VARCHAR, PRIMARY KEY(DEPTNO));
    CREATE TABLE DEPT2 (DEPTNO INTEGER NOT NULL PRIMARY KEY, DNAME VARCHAR);
    CREATE TABLE DEPT3 (DEPTNO INTEGER NOT NULL UNIQUE, DNAME VARCHAR);
    CREATE TABLE DEPT4 (DEPTNO INTEGER NOT NULL, DNAME VARCHAR, UNIQUE(DEPTNO));
    CREATE TABLE EMP (DEPTNO INTEGER, ENAME VARCHAR, FOREIGN KEY (DEPTNO) REFERENCES DEPT (DEPTNO));
    CREATE TABLE EMP2 (DEPTNO INTEGER, ENAME VARCHAR, CHECK (ENAME IS NOT NULL), FOREIGN KEY (DEPTNO) REFERENCES DEPT (DEPTNO));
    

    CREATE USER

    CREATE USER user-name IDENTIFIED BY password
    

    Usage

    Creates a new user with a given password.

    Example

    CREATE USER HOBBES IDENTIFIED BY CALVIN;
    

    CREATE VIEW

    CREATE VIEW viewed-table-name
       [(column-identifier
          [, column-identifier]... )]
       AS query-specification
    

    Usage

    A view can be viewed as a virtual table; that is, a table that does not physically exist, but rather is formed by a query specification against one or more tables.

    Example

    CREATE VIEW TEST_VIEW
       (VIEW_I, VIEW_C, VIEW_ID)
       AS SELECT I, C, ID FROM TEST;
    

    DELETE

    DELETE FROM table-name
       [WHERE search-condition]
    

    Usage

    Depending on your search condition the specified row(s) will be deleted from a given table.

    Example

    DELETE FROM TEST WHERE ID = 5;
    DELETE FROM TEST;
    

    DELETE (positioned)

    DELETE FROM table-name WHERE CURRENT OF cursor-name
    

    Usage

    The positioned DELETE statement deletes the current row of the cursor.

    Example

    DELETE FROM TEST WHERE CURRENT OF MY_CURSOR;
    

    DROP EVENT

    DROP EVENT event-name
    

    Usage

    The DROP EVENT statement removes the specified event from the database.

    Example

    DROP EVENT EVENT-TEST;
    

    DROP INDEX

    DROP INDEX index-name
    

    Usage

    The DROP INDEX statement removes the specified index from the database.

    Example

    DROP INDEX UX_TEST;
    

    DROP PROCEDURE

    DROP PROCEDURE procedure-name
    

    Usage

    The DROP PROCEDURE statement removes the specified procedure from the database.

    Example

    DROP PROCEDURE PROCTEST;
    

    DROP ROLE

    DROP ROLE role-name
    

    Usage

    The DROP ROLE statement removes the specified role from the database.

    Example

    DROP ROLE GUEST_USERS;
    

    DROP SEQUENCE

    DROP SEQUENCE sequence-name
    

    Usage

    The DROP SEQUENCE statement removes the specified sequence from the database.

    Example

    DROP SEQUENCE SEQ1;
    

    DROP TABLE

    DROP TABLE base-table-name
    

    Usage

    The DROP TABLE statement removes the specified table from the database.

    Example

    DROP TABLE TEST;
    

    DROP USER

    DROP USER user-name
    

    Usage

    The DROP USER statement removes the specified user from the database.

    Example

    DROP USER HOBBES;
    

    DROP VIEW

    DROP VIEW viewed-table-name
    

    Usage

    The DROP VIEW statement removes the specified view from the database.

    Example

    DROP VIEW TEST_VIEW;
    

    EXPLAIN PLAN FOR

    EXPLAIN PLAN FOR sql-statement
    

    Usage

    The EXPLAIN PLAN FOR statement shows the selected search plan for the specified SQL statement.

    Example

    EXPLAIN PLAN FOR select * from tables;
    

    GRANT

    GRANT {ALL | grant-privilege
       [, grant-privilege]...}
       ON table-name
       TO {PUBLIC | user-name [, user-name]... |
          role-name [, role-name]... }
       [WITH GRANT OPTION]
    GRANT role-name TO user-name
    grant-privilege ::= DELETE | INSERT | SELECT |
       UPDATE [( column-identifier
          [, column-identifier]... )] |
       REFERENCES [( column-identifier
          [, column-identifier]... )]
    GRANT EXECUTE ON procedure-name 
       TO {PUBLIC | user-name [, user-name]... |
          role-name [, role-name]... }
    GRANT {SELECT | INSERT} ON event-name
       TO {PUBLIC | user-name [, user-name]... |
          role-name [, role-name]... }
    GRANT {SELECT | UPDATE} ON sequence-name
       TO {PUBLIC | user-name [, user-name]... |
          role-name [, role-name]... }
    

    Usage

    The GRANT statement is

    1. used to grant privileges to the specified user or role.
    2. used to grant privileges to the specified user by giving
      the user the privileges of the specified role.

    If you do use the optional WITH GRANT OPTION, you give permission for the user(s) to whom you are granting the privilege to pass it on to other users.

    Example

    GRANT GUEST_USERS TO CALVIN;
    GRANT INSERT, DELETE ON TEST TO GUEST_USERS;
    

    INSERT

    INSERT INTO table-name [(column-identifier
          [, column-identifier]...)]
       VALUES (insert-value[, insert-value]... )
    

    Usage

    There are several variations of the INSERT statement. In the simplest instance, a value is provided for each column of the new row in the order specified at the time the table was defined (or altered). In the preferable form of the INSERT statement the columns are specified as part of the statement and they needn't to be in any specific order as long as the orders of the column and value lists match with one another.

    Example

    INSERT INTO TEST (C, ID) VALUES (0.22, 5);
    INSERT INTO TEST VALUES (0.35, 9);
    

    INSERT (using query)

    INSERT INTO table-name [( column-identifier
       [, column-identifier]... )]
       query-specification
    

    Usage

    The query specification creates a virtual table. Using the INSERT statement the rows of created virtual table are inserted into the specified table (the degree and data types of the virtual table and inserted columns must match).

    Example

    INSERT INTO TEST (C, ID) SELECT A, B FROM INPUT_TO_TEST;
    

    REVOKE (role from user)

    REVOKE {role-name [, role-name]... }
       FROM {PUBLIC | user-name [, user-name]... }
    

    Usage

    The REVOKE statement is used to take a role away from users.

    Example

    REVOKE GUEST_USERS FROM HOBBES;
    

    REVOKE (privilege from role or user)

    REVOKE
       {revoke-privilege [, revoke-privilege]... }
       ON table-name
       FROM {PUBLIC | user-name [, user-name]... |
          role-name [, role-name]... }
    revoke-privilege ::= DELETE | INSERT |
       SELECT | UPDATE | REFERENCES
    REVOKE EXECUTE ON procedure-name
       FROM {PUBLIC | user-name [, user-name]... |
          role-name [, role-name]... }
    REVOKE {SELECT | INSERT} ON event-name FROM
       {PUBLIC | user-name [, user-name]... |
           role-name [, role-name]... }
    REVOKE {SELECT | INSERT} ON sequence-name
       FROM {PUBLIC | user-name [, user-name]... |
          role-name [, role-name]... }
    

    Usage

    The REVOKE statement is used to take privileges away from users and roles.

    Example

    REVOKE INSERT ON TEST FROM GUEST_USERS;
    

    ROLLBACK

    ROLLBACK WORK
    

    Usage

    The changes made in the database are discarded by ROLLBACK statement. It terminates the transaction.

    Example

    ROLLBACK WORK;
    

    SELECT

    SELECT [ALL | DISTINCT] select-list
       FROM table-reference-list
       [WHERE search-condition]
       [GROUP BY column-name [, column-name]... ]
       [HAVING search-condition]
       [UNION [ALL] select-statement]...
       [ORDER BY {unsigned integer | column-name}
          [ASC|DESC]]
    

    Usage

    The SELECT statement is used to retrieve information.

    Example

    SELECT ID FROM TEST;
    SELECT DISTINCT ID, C FROM TEST WHERE ID = 5;
    SELECT DISTINCT ID FROM TEST ORDER BY ID ASC;
    SELECT NAME, ADDRESS FROM CUSTOMERS UNION SELECT NAME, DEP FROM PERSONNEL;
    

    SET

    SET SQL INFO {ON | OFF} [FILE {file-name |
          "file-name" | 'file-name'}]
       [LEVEL info-level]
    SET SQL SORTARRAYSIZE {array-size | DEFAULT}
    SET SQL JOINPATHSPAN {path-span | DEFAULT}
    SET SQL CONVERTORSTOUNIONS
       {YES [COUNT value] | NO | DEFAULT}
    SET LOCK TIMEOUT timeout-in-seconds
    SET TRANSACTION READ ONLY
    SET TRANSACTION READ WRITE
    SET TRANSACTION CHECK WRITESET
    SET TRANSACTION CHECK READSET
    SET TRANSACTION ISOLATION LEVEL READ COMMITTED
    SET TRANSACTION ISOLATION LEVEL
       REPEATABLE READ
    SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
    

    Usage

    All the settings a re per user settings unlike the settings in the solid.ini file.

    In SQL INFO the default file is a global soltrace.out shared by all users. If the file name is given, all future INFO ON settings will use that file unless a new file is set. It is recommended that the file name is given in single quotes, because otherwise the file name is converted to uppercase. The info output is appended to the file and the file is never truncated, so after the info file is not needed anymore, the user must manually delete the file. If the file open fails, the info output is silently discarded.

    The default SQL INFO LEVEL is 4. A good way to generate useful info output is to set info on with a new file name and then execute the SQL statement using EXPLAIN PLAN FOR syntax. This method gives all necessary estimator information but does not generate output from the fetches which may generate a huge output file.

    The sort array is used for in memory sorts in the SQL interpreter. The minimum value for SORTARRAYSIZE is 100. If a smaller value is given, minimum value 100 will be used. If large sorts are needed, it is recommended that the external sorter facility is used (in Sorter section in solid.ini) instead on using very large SORTARRAYSIZE.

    The COUNT parameter in SQL CONVERTORSTOUNIONS tells how many ors are converted to unions. The default is 10 which should be enough in most cases.

    The SET TRANSACTION settings are borrowed from ANSI SQL. It sets the transaction isolation level.

    Example

    SET SQL INFO ON FILE 'sqlinfo.txt' LEVEL 5
    

    UPDATE (positioned)

    UPDATE table-name
       SET column-identifier = {expression | NULL}
       [, column-identifier = {expression |
          NULL}]...
       WHERE CURRENT OF cursor-name
    

    Usage

    The positioned UPDATE statement updates the current row of the cursor. The name of the cursor is defined using ODBC API function named SQLSetCursorName.

    Example

    UPDATE TEST SET C = 0.33
    WHERE CURRENT OF MYCURSOR
    

    UPDATE (searched)

    UPDATE table-name
       SET column-identifier = {expression | NULL}
       [, column-identifier = {expression |
          NULL}]...
       [WHERE search-condition]
    

    Usage

    The UPDATE statement is used to modify the values of one or more columns in one or more rows, according the search conditions.

    Example

    UPDATE TEST SET C = 0.44 WHERE ID = 5
    

    Table-reference

    Table-reference
    table-reference-list ::= table-reference
    table-reference::= table-name [ {, table-name} ... ] | outer-join
    outer-join::= table-name LEFT [OUTER] JOIN
    {table-name | outer-join}
    ON search-condition

    Query-specification

    Query-specification
    query-specification ::= SELECT [DISTINCT | ALL] select-list
    table-expression
    select-list::= * | select-sublist
    [ {, select-sublist} ... ]
    select-sublist::= derived-column |
    [table-name | table-identifier ].*
    derived-column::= expression [ [AS] column-alias] ]
    table-expression::= FROM table-reference-list
    [WHERE search-condition]
    [GROUP BY column-name [, column-name] ...]
    [HAVING search-condition]

    Search-condition

    Search-condition
    search-condition ::= search-item | search-item { AND | OR }
    search-item
    search-item ::= [NOT] { search-test |
    (search-condition) }
    search-test ::= comparison-test | between-test |
    like-test | null-test | set-test |
    quantified-test | existence-test
    comparison-test::= expression { = | <> | < | <= | > | >= }
    { expression | subquery }
    between-test::= column-identifier [NOT] BETWEEN
    expression AND expression
    like-test::= column-identifier [NOT] LIKE value
    [ESCAPE value]
    null-test::= column-identifier IS [NOT] NULL
    set-test::= expression [NOT] IN ( { value
    [,value]... | subquery } )
    quantified-test::= expression { = | <> | < | <= | > | >= }
    [ALL | ANY | SOME] subquery
    existence-test::= EXISTS subquery
    subquery::= (query-specification)

    Check-condition

    Check-condition
    check-condition ::= check-item | check-item { AND | OR }
    check-item
    check-item ::= [NOT] { check-test |
    (check-condition) }
    check-test ::= comparison-test | between-test |
    like-test | null-test | list-test
    comparison-test::= expression { = | <> | < | <= | > | >= }
    { expression | subquery }
    between-test::= column-identifier [NOT] BETWEEN
    expression AND expression
    like-test::= column-identifier [NOT] LIKE value
    [ESCAPE value]
    null-test::= column-identifier IS [NOT] NULL
    list-test::= expression [NOT] IN ( { value
    [,value]...} )

    Expression

    Expression
    expression::= expression-item | expression-item
    { + | - | * | / } expression-item
    expression-item::= [ + | - ] { value | column-identifier | function |
    ( expression ) }
    value::= literal | USER | variable
    function::= COUNT(*) | distinct-function | all-function |
    null-function | scalar-function
    distinct-function::= { AVG | MAX | MIN | SUM | COUNT }
    ( DISTINCT column-identifier )
    all-function::= { AVG | MAX | MIN | SUM | COUNT }
    ( [ ALL ] expression )
    null-function::= { NULLVAL_CHAR( ) | NULLVAL_INT( ) }
    scalar-function::= string-function | numeric-function |
    timedate-function | system-function | datatypeconversion-function
    string-function::= ASCII(str-exp) | CHAR(ascii-code) |
    CONCAT(str-exp1, str-exp2) |
    {FN INSERT(str-exp1, start, length, str-exp2)} | LCASE(str-exp) | {FN LEFT(str-exp)} |
    LENGTH(str-exp) |
    LOCATE(str-exp1, strexp2 [, start]) | LTRIM(str-exp) | REPEAT(str-exp, count) | RIGHT(str-exp, count) | RTRIM(str-exp) | SPACE(count) |
    SUBSTRING(str-exp, start, length) | UCASE(str-exp)
    numeric-function::= ABS(num-exp) | ACOS(float-exp) |
    ASIN(float-exp) | ATAN(float-exp) |
    ATAN2(float-exp1, float-exp2) | CEILING(num-exp) | COS(float-exp) | COT(float-exp) | DEGREES(num-exp) | EXP(float-exp) | FLOOR(num-exp) |
    LOG(float-exp) | LOG10(float-exp) |
    MOD(int-exp1, int-exp2) | PI() |
    POWER(num-exp, int-exp) | RADIANS(num-exp) | ROUND(num-exp, int-exp) | SIGN(num-exp) | SQRT(float-exp) | TAN(float-exp) |
    TRUNCATE(num-exp, int-exp)
    datetime-function::= CURDATE() | CURTIME() |
    DAYNAME(date-exp) | DAYOFMONTH(date-exp) | DAYOFWEEK(date-exp) | DAYOFYEAR(date-exp) | HOUR(time-exp) | MINUTE(time-exp) | MONTH(date-exp) | MONTHNAME(date-exp) | NOW() | QUARTER(date-exp) | SECOND(time-exp) | TIMESTAMPADD(interval, int-exp, timestamp-exp) |
    TIMESTAMPDIFF(interval, timestamp-exp1, timestamp-exp2) | WEEK(date_exp) |YEAR(date_exp)
    system-function::= IFNULL(exp, value) | {FN USER()}
    datatypeconversion-function ::= CONVERT_CHAR(value-exp) | CONVERT_DATE(value-exp) | CONVERT_DECIMAL(value-exp) | CONVERT_DOUBLE(value-exp) | CONVERT_FLOAT(value-exp) | CONVERT_INTEGER(value_exp) | CONVERT_LONGVARCHAR(value-exp) | CONVERT_NUMERIC(value-exp) | CONVERT_REAL(value-exp) | CONVERT_SMALLINT(valuie-exp) | CONVERT_TIME(value-exp) | CONVERT_TIMESTAMP(value-exp) | CONVERT_TINYINT(value-exp) | CONVERT_VARCHAR(value-exp)

    Data-type

    Data-type
    data-type::= {BINARY |
    CHAR [ length ] |
    DATE |
    DECIMAL [ ( precision [ , scale ] ) ] |
    DOUBLE PRECISION |
    FLOAT [ ( precision ) ] |
    INTEGER |
    LONG VARBINARY |
    LONG VARCHAR |
    NUMERIC [ ( precision [ , scale ] ) ] |
    REAL |
    SMALLINT |
    TIME [ ( time precision ) ] |
    TIMESTAMP [ ( timestamp precision ) ] |
    TINYINT |
    VARBINARY |
    VARCHAR [ ( length ) ] }

    Date and Time Literals

    Date/time literal
    date-literal´YYYY-MM-DD´
    time-literal´HH:MM:SS´
    timestamp-literal´YYYY-MM-DD HH:MM:SS´

    APPENDIX E SYSTEM VIEWS AND SYSTEM TABLES

    System Views

    SOLID Server supports views specified in the X/Open SQL Standard.

    COLUMNS

    The COLUMNS system view identifies the columns which are accessible to the current user.
    Column name Data typeDescription
    TABLE_CATALOGVARCHAR reserved for future use
    TABLE_SCHEMAVARCHAR the name of the schema containing TABLE_NAME
    TABLE_NAMEVARCHAR the name of the table or view
    COLUMN_NAMEVARCHAR the name of the column of the specified table or view
    DATA_TYPEVARCHAR the data type of the column
    SQL_DATA_TYPE_NUMSMALLINT ODBC compliant data type number
    CHAR_MAX_LENGTHINTEGER maximum length for a character data type column; for others NULL
    NUMERIC_PRECISIONINTEGER the number of digits of mantissa precision of the column, if DATA_TYPE is approximate numeric data type, NUMERIC_PREC_RADIX indicates the units of measurement; for other numeric types contains the total number of decimal digits allowed in the column; for character data types NULL
    NUMERIC_PREC_RADIX SMALLINTthe radix of numeric precision if DATA_TYPE is one of the approximate numeric data types; otherwise NULL
    NUMERIC_SCALESMALLINT total number of significant digits to the right of the decimal point; for INTEGER and SMALLINT 0; for others NULL
    NULLABLECHAR if column is known to be not nullable 'NO'; otherwise 'YES'
    NULLABLE_ODBCSMALLINT ODBC, if column is known to be not nullable '0'; otherwise '1'
    REMARKSLONG VARCHAR reserved for future use

    SERVER_INFO

    The SERVER_INFO system view provides attributes of the current database system or server.
    Column name Data typeDescription
    SERVER_ATTRIBUTEVARCHAR identifies an attribute of the server
    ATTRIBUTE_VALUEVARCHAR the value of the attribute

    TABLES

    The TABLES system view identifies the tables accessible to the current user.
    Column name Data typeDescription
    TABLE_CATALOGVARCHAR reserved for future use
    TABLE_SCHEMAVARCHAR the name of the schema containing TABLE_NAME
    TABLE_NAMEVARCHAR the name of the table or view
    TABLE_TYPEVARCHAR the type of the table
    REMARKSLONG VARCHAR reserved for future use

    System Tables

    SQL_LANGUAGES

    The SQL_LANGUAGES system table lists the SQL standards and SQL dialects which supported.
    Column name Data typeDescription
    SOURCEVARCHAR the organization that defined this specific SQL version
    SOURCE_YEARVARCHAR the year the relevant standard was approved
    CONFORMANCEVARCHAR the conformance level at which conformance to the relevant standard
    INTEGRITYVARCHAR indicates whether the Integrity Enhancement Feature is supported
    IMPLEMENTATIONVARCHAR identifies uniquely the vendor's SQL lanquage; NULL if SOURCE is 'ISO'
    BINDING_STYLEVARCHAR the binding style 'DIRECT', *EMBED' or 'MODULE'
    PROGRAMMING_LANGVARCHAR the host lanquage used

    SYS_ATTAUTH

    Column name Data typeDescription
    REL_IDINTEGER table id
    UR_IDINTEGER user or role id
    ATTR_IDINTEGER column id
    PRIVINTEGER privilege info
    GRANT_IDINTEGER grantor id
    GRANT_TIMTIMESTAMP grant time

    SYS_CARDINAL

    Column name Data typeDescription
    REL_IDINTEGER the relation id as in SYS_TABLES
    CARDININTEGER the number of rows in the table
    SIZEINTEGER the size of the data in the table
    LAST_UPDTIMESTAMP the timestamp of the last update in the table

    SYS_COLUMNS

    Column name Data typeDescription
    IDINTEGER unique column identifier
    REL_IDINTEGER the relation id as in SYS_TABLES
    COLUMN_NAMEVARCHAR the name of the column
    COLUMN_NUMBERINTEGER the number of the column in the table (in creation order)
    DATA_TYPEVARCHAR the data type of the column
    SQL_DATA_TYPE_NUMSMALLINT ODBC compliant data type number
    DATA_TYPE_NUMBERINTEGER internal data type number
    CHAR_MAX_LENGTHINTEGER maximum length for a CHAR field
    NUMERIC_PRECISIONINTEGER numeric precision
    NUMERIC_PREC_RADIX SMALLINTnumeric precision radix
    NUMERIC_SCALESMALLINT numeric scale
    NULLABLECHAR are NULL values allowed (Yes, No)
    NULLABLE_ODBCSMALLINT ODBC, are NULL values allowed (1,0)
    FORMATVARCHAR reserved for future use
    DEFAULT_VALVARBINARY reserved for future use
    ATTR_TYPEINTEGER user defined (0) or internal (>0)
    REMARKSLONG VARCHAR reserved for future use

    SYS_EVENTS

    Column name Data typeDescription
    IDINTEGER unique event identifier
    EVENT_NAMEVARCHAR the name of the event
    EVENT_PARAMCOUNTINTEGER number of parameters
    EVENT_PARAMTYPESLONG VARBINARY types of parameters
    EVENT_TEXTVARCHAR the body of the event
    EVENT_SCHEMAVARCHAR the owner of the event
    CREATIMETIMESTAMP creation time
    TYPEINTEGER reserved for future use

    SYS_FORKEYPARTS

    Column name Data typeDescription
    IDINTEGER foreign key identifier
    KEYP_NOINTEGER keypart number
    ATTR_NOINTEGER column number
    ATTR_IDINTEGER column identifier
    ATTR_TYPEINTEGER column type
    CONST_VALUEVARBINARY possible internal constant value; otherwise NULL

    SYS_FORKEYS

    Column name Data typeDescription
    IDINTEGER foreign key identifier
    REF_REL_IDINTEGER referenced table identifier
    CREATE_REL_IDINTEGER creator table identifier
    REF_KEY_IDINTEGER referenced key identifier
    REF_TYPEINTEGER reference type
    KEY_SCHEMAVARCHAR creator name
    KEY_NREFINTEGER number of referenced key parts

    SYS_INFO

    Column name Data typeDescription
    PROPERTYVARCHAR the name of the property
    VALUE_STRVARCHAR value as a string
    VALUE_INTINTEGER value as an integer

    SYS_KEYPARTS

    Column name Data typeDescription
    IDINTEGER unique key identifier
    REL_IDINTEGER the relation id as in SYS_TABLES
    KEYP_NOINTEGER keypart identifier
    ATTR_IDINTEGER column identifier
    ATTR_NOINTEGER the number of the column in the table (in creation order)
    ATTR_TYPEINTEGER the type of the column
    CONST_VALUEVARBINARY constant value or NULL
    ASCENDINGCHAR is the key ascending (Yes) or descending (No)

    SYS_KEYS

    Column name Data typeDescription
    IDINTEGER unique key identifier
    REL_IDINTEGER the relation id as in SYS_TABLES
    KEY_NAMEVARCHAR the name of the key
    KEY_UNIQUECHAR is the key unique (Yes, No)
    KEY_NONUNIQUE_ODBC SMALLINTODBC, is the key NOT unique (1, 0)
    KEY_CLUSTERINGCHAR is the key a clustering key (Yes, No)
    KEY_PRIMARYCHAR is the key a primary key (Yes, No)
    KEY_PREJOINEDCHAR reserved for future use
    KEY_SCHEMAVARCHAR the owner of the key
    KEY_NREFINTEGER internal system specific information

    SYS_PROCEDURES

    Column name Data typeDescription
    IDINTEGER unique procedure identifier
    PROCEDURE_NAMEVARCHAR procedure name
    PROCEDURE_TEXTLONG VARCHAR procedure body
    PROCEDURE_BINLONG VARBINARY compiled form of the procedure
    PROCEDURE_SCHEMAVARCHAR the owner
    CREATIMETIMESTAMP creation time
    TYPEINTEGER reserved for future use

    SYS_RELAUTH

    Column name Data typeDescription
    REL_IDINTEGER relation id
    UR_IDINTEGER user or role id
    PRIVINTEGER privilege info
    GRANT_IDINTEGER grantor id
    GRANT_TIMTIMESTAMP grant time
    GRANT_OPTCHAR grant option info

    SYS_SEQUENCES

    Column name Data typeDescription
    SEQUENCE_NAMEVARCHAR sequence name
    IDINTEGER unique id
    DENSECHAR is the sequence dense or sparse
    SEQUENCE_SCHEMAVARCHAR the schema name
    CREATIMETIMESTAMP creation time

    SYS_TABLEMODE

    Column name Data typeDescription
    IDINTEGER relation id
    MODEVARCHAR special mode info
    MODIFY_TIMETIMESTAMP last modify time
    MODIFY_USERVARCHAR last user that modified

    SYS_SYNONYM

    Column name Data typeDescription
    TARGET_IDINTEGER reserved for future use
    SYNONINTEGER reserved for future use

    SYS_TABLES

    Column name Data typeDescription
    IDINTEGER unique table identifier
    TABLE_NAMEVARCHAR the name of the table
    TABLE_TYPEVARCHAR the type of the table (BASE TABLE or VIEW)
    TABLE_SCHEMAVARCHAR the owner of the table
    TABLE_CATALOGVARCHAR reserved for future use
    CREATIMETIMESTAMP the creation time of the table
    CHECKSTRINGLONG VARCHAR possible check option defined for the table
    REMARKSLONG VARCHAR reserved for future use

    SYS_TYPES

    Column name Data typeDescription
    TYPE_NAMEVARCHAR the name of the data type
    DATA_TYPESMALLINT ODBC, data type number
    PRECISIONINTEGER ODBC, the precision of the data type
    LITERAL_PREFIXVARCHAR ODBC, possible prefix for literal values
    LITERAL_SUFFIXVARCHAR ODBC, possible suffix for literal values
    CREATE_PARAMSVARCHAR ODBC, the parameters needed to create a column of the data type
    NULLABLESMALLINT ODBC, can the data type contain NULL values
    CASE_SENSITIVESMALLINT ODBC, is the data type case sensitive
    SEARCHABLESMALLINT ODBC, the supported search operations
    UNSIGNED_ATTRIBUTE SMALLINTODBC, is the data type unsigned
    MONEYSMALLINT ODBC, whether the data is a money data type
    AUTO_INCREMENTSMALLINT ODBC, whether the data type is autoincrementing
    LOCAL_TYPE_NAMEVARCHAR ODBC, has the data type another implementation defined name
    MINIMUM_SCALESMALLINT ODBC, the minimum scale of the data type
    MAXIMUM_SCALESMALLINT ODBC, the maximum scale of the data type

    SYS_UROLE, SYS_USERS

    These tables are for system's internal use only.

    SYS_VIEWS

    Column name Data typeDescription
    V_IDINTEGER unique identifier for this view
    TEXTLONG VARCHAR view definition
    CHECKSTRINGLONG VARCHAR possible CHECK OPTION defined for the view
    REMARKSLONG VARCHAR reserved for future use

    APPENDIX F RESERVED WORDS

    SOLID SQL API Reserved Words

    The following words are reserved in several SQL standards: ODBC 2.1, X/Open and SQL Aceess Group SQL CAE specification, Database Language - SQL: ANSI X3H2 (SQL-92). Some words are used by SOLID SQL. Applications should avoid using any of these keywords for other purposes. The following table contains also potential reserved words; these markings are enclosed in parenthesis.
    X
    Reserved word ODBCX/Open SQL ANSI SQL2SOLID SQL
    ABSOLUTEX X
    ACTION X
    ADAX
    ADDX XXX
    ADMIN X
    AFTER (X) X
    ALIAS (X)
    ALLX XXX
    ALLOCATEX XX
    ALTERX XXX
    ANDX XXX
    ANYX XXX
    AREX X
    ASX XXX
    ASCX XXX
    ASSERTIONX X
    ASYNC (X) X
    ATX X
    AUTHORIZATIONX XX
    AVGX XX
    BEFORE (X) X
    BEGINX XXX
    BETWEENX XXX
    BINARY X
    BITX X
    BIT_LENGTHX X
    BOOLEAN (X)
    BOTH X
    BREADTH (X)
    BYX XXX
    CALL (X)X
    CASCADEX XXX
    CASCADEDX X
    CASEX X
    CASTX X
    CATALOGX X
    CHARX XXX
    CHAR_LENGTHX X
    CHARACTERX XX
    CHARACTER_LENGTHX X
    CHECKX XXX
    CLOSEX XXX
    COALESCEX X
    COBOLX
    COLLATEX X
    COLLATIONX X
    COLUMNX XX
    COMMITX XXX
    COMMITTED X
    COMPLETION (X)
    CONNECTX XX
    CONNECTIONX XX
    CONSTRAINTX X
    CONSTRAINTSX X
    CONTINUEX XX
    CONVERTX X
    CORRESPONDINGX X
    COUNTX XX
    CREATEX XXX
    CROSS X
    CURRENTX XX
    CURRENT_DATEX X
    CURRENT_TIMEX X
    CURRENT_TIMESTAMPX X
    CURRENT_USER X
    CURSORX XXX
    CYCLE (X)
    DATA (X)
    DATEX XX
    DAYX X
    DEALLOCATEX XX
    DECX XX
    DECIMALX XXX
    DECLAREX XX
    DEFAULT XXX
    DEFERRABLEX X
    DEFERREDXX
    DELETEXXXX
    DEPTH (X)
    DESCX XXX
    DESCRIBEX XX
    DESCRIPTORX XX
    DIAGNOSTICSX XX
    DICTIONARYX(X)
    DISCONNECTX XX
    DISPLACEMENTX
    DISTINCTX XXX
    DOMAINX X
    DOUBLEXXXX
    DROPX XXX
    EACH (X)
    ELSEX XX
    ELSEIF (X) X
    ENDX XXX
    END-EXECX X
    EQUALS (X)
    ESCAPEX XX
    EVENT X
    EXCEPTX X
    EXCEPTIONXXX
    EXECX XXX
    EXECUTEX XXX
    EXISTSX XXX
    EXPLAIN X
    EXTERNALX X
    EXTRACTX X
    FALSEX X
    FETCHXXXX
    FIRSTX X
    FLOATX XXX
    FORX XXX
    FOREIGNX XXX
    FORTRANX
    FOUNDX XX
    FROMX XXX
    FULLX X
    GENERAL (X)
    GETX XX
    GLOBALX X
    GOX X
    GOTOX XX
    GRANTX XXX
    GROUPX XXX
    HAVINGX XXX
    HOURX X
    IDENTIFIED X
    IDENTITYX X
    IF (X)X
    IGNOREX (X)
    IMMEDIATEX XX
    INX XXX
    INCLUDEX X
    INDEXX XX
    INDICATORX X
    INITIALLYX X
    INNERX X
    INPUTX X
    INSENSITIVEX X
    INSERTX XXX
    INT
    INTEGER
    INTERSECT XXX
    INTERVALX X
    INTOX XXX
    ISX XXX
    ISOLATIONX XX
    JOINX XX
    KEYX XXX
    LANGUAGEX X
    LASTX X
    LEADING X
    LEAVE (X) X
    LEFTX XX
    LESS (X)
    LEVELX XX
    LIKEX XXX
    LIMIT (X)
    LOCALX X
    LOCK X
    LONG X
    LOOP (X)X
    LOWERX X
    MAINMEMORY X
    MATCHX X
    MAXX XX
    MINX XX
    MINUTEX X
    MODIFY (X) X
    MODULEX X
    MONTHX X
    MUMPSX
    NAMESX X
    NATIONALX X
    NATURAL X
    NCHARX X
    NEW (X)X
    NEXTX XX
    NO X
    NONEX (X)
    NOTX XXX
    NULLX XXX
    NULLIFX X
    NUMERICX XXX
    OBJECT (X)
    OCTET_LENGTHX X
    OFX XXX
    OFFX (X)
    OID (X)
    OLD (X)
    ONX XXX
    ONLYX XX
    OPENX XX
    OPERATION (X)
    OPERATORS (X)
    OPTIMISTIC X
    OPTIONX XX
    ORX XXX
    ORDERX XXX
    OTHERS (X)
    OUTERX XX
    OUTPUTX X
    OVERLAPSX X
    PARAMETERS (X)
    PARTIALX X
    PASCALX
    PENDANT (X)
    PESSIMISTIC X
    PLAN X
    PLIX
    POSITIONX X
    POST X
    PRECISIONX XXX
    PREORDER (X)
    PREPAREX XXX
    PRESERVEX X
    PRIMARYX XXX
    PRIORX X
    PRIVATE (X)
    PRIVILEGESX XX
    PROCEDUREX XX
    PROTECTED (X)
    PUBLICX XXX
    READ XX
    REAL XXX
    RECURSIVE (X)
    REF (X)
    REFERENCES XXX
    REFERENCING (X) X
    REGISTER X
    RELATIVE X
    RENAME X
    REPEATABLE X
    REPLACE (X)
    RESIGNAL (X)
    RESTRICTX XXX
    RETURN (X) X
    RETURNS (X) X
    REVOKEX XXX
    RIGHTX X
    ROLE (X)X
    ROLLBACKX XXX
    ROUTINE (X)
    ROW (X)
    ROWSX X
    SAVEPOINT (X) X
    SCHEMAX XX
    SCROLLX X
    SEARCH (X)
    SECONDX X
    SECTIONX XX
    SELECTX XXX
    SENSITIVE (X)
    SEQUENCEX (X) X
    SERIALIZABLE X
    SESSION X
    SESSION_USER X
    SETX XXX
    SIGNAL (X)
    SIMILAR (X)
    SIZEX X
    SMALLINTX XXX
    SOMEX XX
    SPACE
    SQLX XXX
    SQLCAX X
    SQLCODEX X
    SQLERRORX XXX
    SQLEXCEPTION (X)
    SQLSTATEX X
    SQLWARNINGX X(X)
    START X
    STRUCTURE (X)
    SUBSTRINGX X
    SUMX XX
    SYSTEMX
    SYSTEM_USER X
    TABLEX XXX
    TEMPORARYX X
    TEST (X)
    THENX XX
    THERE (X)
    TIMEX XX
    TIMEOUT X
    TIMESTAMPX XX
    TIMEZONE_HOURX X
    TIMEZONE_MINUTEX X
    TINYINT X
    TOX XXX
    TRAILING X
    TRANSACTION XX
    TRANSLATEX X
    TRANSLATIONX X
    TRIGGER (X) X
    TRIM X
    TRUEX X
    TYPE (X)
    UNDER (X)
    UNIONX XXX
    UNIQUEX XXX
    UNKNOWNX X
    UNREGISTER X
    UPDATEX XXX
    UPPERX X
    USAGEX X
    USERX XXX
    USINGX XXX
    VALUEX XX
    VALUESX XXX
    VARBINARY X
    VARCHARX XXX
    VARIABLE (X)
    VARYINGX XX
    VIEWX XXX
    VIRTUAL (X)
    VISIBLE (X)
    WAIT (X)X
    WHENX XX
    WHENEVERX XX
    WHEREX XXX
    WHILE (X) X
    WITHX XXX
    WITHOUT (X)
    WORKX XXX
    WRITE XX
    YEARX X
    ZONE X

    GLOSSARY OF TERMS

    Backup directory

    This directory holds the backup of your database files. You define it in the BackupDirectory parameter or give it as a parameter to the backup command.

    Binary Large Object (BLOb)

    A BLOb is a large block of information such as video, sound, or a document. Blobs can be saved to and retrieved from SOLID Server.

    Checkpoint

    Checkpoints are used to store a consistent state of the database quickly onto the disk. After a system crash, the database will start recovering transactions from the last checkpoint.

    Communication protocol

    This is the protocol that a server and its clients use to communicate with each other. The server and client have to use the same communication protocol in order to establish a connection.

    Configuration file (solid.ini)

    This file includes the settings for SOLID programs. You may view this file using a normal text editor like notepad.exe.

    Database administrator

    The database administrator is responsible for tasks such as:

  • managing users, tables, and indexes
  • backing up data, allocating disk space for the database files
  • Database client

    A database client program uses a database server to store data and to execute data management operations.

    Database directory

    The database is located in this directory. It is by default your current working directory. The database directory and database file names can be modified by changing parameters FileSpec_[1...N]

    Database file (index file)

    The SOLID database file holds both data and related indexes. This file is also called index file.

    Database management system (DBMS)

    A DBMS is a system that stores information in and retrieves information from a database file.

    Database server

    A database server is a program serving database clients by executing requests received from client applications.

    Log file

    This file holds a log of all committed operations executed by the database server. If a system crash occurs, the database server can use this log to recover lost operations.

    Network name

    A network name is a combination of a server name and a communication protocol. It identifies a database server in the computer network.

    Open Database Connectivity (ODBC)

    ODBC is a programming interface standard for SQL database programs published by the Microsoft Corporation. SOLID SQL API offer native high performance ODBC driver.

    Relational database management system (RDBMS)

    SOLID Server is a RDBMS, which stores and retrieves information according to relations defined by the user. In RDBMSs data is stored and retrieved in two-dimensional tables.

    SQL Access Group's Call Level Interface (SAG CLI)

    SAG CLI is a programming interface standard, whichODBC is also based on. SOLID Server supports also SAG CLI.

    Schema

    All tables are contained in a higher level construct called a schema. It is a place where tables and related objects can be gathered together under one qualifying name. For each schema there are zero or more tables, and for each table, there is exactly one schema to which it belongs. The relationship between a schema and its tables is similar to that of an operating system file directory and the files contained within that directory.

    SOLID directory

    The default directory for storing SOLID DBMS database files. This is either the server program's working directory or alternatively the directory set by the SOLIDDIR environment variable.

    Structured Query Language (SQL)

    SQL is a standardized query language, designed for handling database requests and administration. The SQL syntax used in SOLID Server is based on ANSI X3.135-1989 level 2 standard including important ANSI X3.135-1992 (SQL2) extensions. For a more formal definition of the syntax, refer to Appendix D SOLID SQL Syntax of this document. For a full description of the SOLID SQL API, refer to the SOLID SQL API Help file. The same information is included in the SOLID Server Programmer's Guide and the SOLID Server Programmer's Reference.

    SQL script

    SQL script is a file consisting of multiple SQL statements. You can use a script to administer your databases.

    System table

    System tables contain information about the state of the database such as table names, column names, data types, etc. System tables and their metadata together form the data dictionary.

    User privilege

    User privileges define the operations a certain database user is allowed to perform with the data in a database.

    User role

    A user role is a combination of user privileges that can be granted to a user.