meta data for this page
  •  

isql SHOW commands

As explained in the help command, there are a number of individual SHOW commands within isql. The general format of the SHOW commands is:

SQL> SHOW <object> [name] ;

The object is always required and the name is required to display details of a specific object. Without a name, the commands will normally display all the objects of the requested type. Unfortunately, unlike the SET commands, there is no handy drill down into the various SHOW commands using the HELP command. However, if you type SHOW on its own, you will be given a little more assistance.

SQL> show;

Valid options are:
CHECKs               COMMENTs                COLLATEs
COLLATIONs           DOMAINs                 DB
DATABASE             DEPENdency              DEPENdencies
EXCEPtions           FILTERs                 FUNCtions
GENerators           GRANTs                  INDexes
INDICES              PROCedures              ROLEs
SYStem               SEQuences               SECURITY CLAsses
SECCLAsses           TABLEs                  TRIGgers
USERS                VIEWs
Command error: show

The upper case letters indicate what you must type as an absolute minimum.

The SHOW commands are detailed and described below. Where possible, examples from the employee database are shown.

SHOW CHECKs

SQL> SHOW CHECKs table_name;

This command displays all user-defined check constraints defined for a specific table. Unlike other SHOW commands, there is no option to display a list of all the check constraints in the database. You must always provide a table name as part of the command.

SQL> show check employee;

CONSTRAINT INTEG_30:
  CHECK ( salary >= (SELECT min_salary FROM job WHERE
                        job.job_code = employee.job_code AND
                        job.job_grade = employee.job_grade AND
                        job.job_country = employee.job_country) AND
          salary <= (SELECT max_salary FROM job WHERE
                        job.job_code = employee.job_code AND
                        job.job_grade = employee.job_grade AND
                        job.job_country = employee.job_country))

SHOW COLLATIONs

SQL> SHOW {COLLATIONs | COLLATION name};
SQL> SHOW {COLLATEs | COLLATE name};

These commands display a list of all the user-defined collations in the current database. It is only available from Firebird 2.0 onwards. The first form of the commands display a list of all the collations while a specific collation may be displayed by providing the collation name.

SQL> show collations;
UNICODE_ENUS_CI, CHARACTER SET UTF8, FROM EXTERNAL ('UNICODE'), PAD SPACE,
CASE INSENSITIVE, 'COLL-VERSION=58.0.6.48'
UNICODE_ENUS_CS, CHARACTER SET UTF8, FROM EXTERNAL ('UNICODE'), PAD SPACE,
'COLL-VERSION=58.0.6.48'

SQL> show collation unicode_enus_ci;
UNICODE_ENUS_CI, CHARACTER SET UTF8, FROM EXTERNAL ('UNICODE'), PAD SPACE,
CASE INSENSITIVE, 'COLL-VERSION=58.0.6.48'

You can see from the output above, which is not part of the employee database, does appear to display all the relevant information in the first form of the command. There does not appear to be much reason to drill down into a specific collation - at least, not according to this example. Some lines in the above have had to be split over two to allow it to fit on the page.

SHOW COMMENTs

SQL> SHOW COMMENTs;

This command displays all comments that have been created, on various objects, in the current database. There is no option to display a specific comment. Each comment is listed along with the object type and name, to which it has been applied.

SQL> show comments;

COMMENT ON DATABASE IS This is the demonstration EMPLOYEE database.;
COMMENT ON TABLE EMPLOYEE IS The EMPLOYEE table has details of our employees.;

The actual comment text is shown between the word IS and the trailing semicolon.

SHOW DATABASE

SQL> SHOW DATABASE;
SQL> SHOW DB;

The SHOW DATABASE (or SHOW DB) command displays details about the current database. The ODS version, shown in the following examples, is only displayed from Firebird version 2.0 onwards.

SQL> show database; 

Database: employee
        Owner: SYSDBA
PAGE_SIZE 4096
Number of DB pages allocated = 270
Sweep interval = 20000
Forced Writes are ON
Transaction - oldest = 190
Transaction - oldest active = 191
Transaction - oldest snapshot = 191
Transaction - Next = 211
ODS = 11.2
Default Character set: NONE

No parameters, such as a specific database name, are required and if supplied, will be ignored. The details displayed will always be for the current database.

SQL> show database testing_db;

Database: employee
        Owner: SYSDBA
PAGE_SIZE 4096
...
Default Character set: NONE

You will note from the above that the details displayed are still for the employee database.

SHOW DEPENdencies

SQL> SHOW DEPENdencies object_name;
SQL> SHOW DEPENdency object_name;

These commands display all dependencies for the specified object name supplied as a parameter. The object name supplied need not necessarily be a table name, it could be a function or procedure name, a sequence name etc.

The output listed is a comma separated list of the other objects in the database upon which the supplied object is dependent. In other words, a procedure would fail to compile if any of the listed dependencies was to be removed, for example.

SQL> show dependencies SET_CUST_NO; 

        [SET_CUST_NO:Trigger]
CUSTOMER:Table<-CUST_NO, CUST_NO_GEN:Generator
+++

The listing above shows that SET_CUST_NO is a trigger and that it is dependent on two separate objects, the CUST_NO column of table CUSTOMER and the sequence/generator named CUST_NO_GEN. If you display the trigger itself, you will see both of those objects mentioned:

SQL> show trigger set_cust_no;

Triggers on Table CUSTOMER:
SET_CUST_NO, Sequence: 0, Type: BEFORE INSERT, Active
AS
BEGIN
    if (new.cust_no is null) then
    new.cust_no = gen_id(cust_no_gen, 1);
END
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Sometimes, the output can be a little confusing. You may see various objects in the list that don't appear to be relevant. The RDB$DEPENDENCIES table, where the data comes from, also holds details of system objects upon which a given object will depend.

SHOW DOMAINs

SQL> SHOW {DOMAINs | DOMAIN name};

This command displays domain information. A domain is a user-defined data type, global to the database. It is used to define the format and range of columns, upon which the actual column definitions in tables are based.

Firebird tables are defined by the specification of columns, which store appropriate information in each column using data types.

A data type is an elemental unit when defining data, which specifies the type of data stored in tables, and which operations may be performed on this data. It can also include permissible calculative operations and maximum data size. Examples of data types include: numerical (numeric, decimal, integer);textual (char, varchar, nchar, nvarchar); date (date, time, timestamp) and blobs(binary large objects).

As with many show commands, there are two forms. The first displays a list of all known domains in the database while the second allows you to display the details of a specific domain.

SQL> show domain;

       ADDRESSLINE         BUDGET
       COUNTRYNAME         CUSTNO
       DEPTNO              EMPNO
       FIRSTNAME           JOBCODE
...

SQL> show domain addressline;
ADDRESSLINE           VARCHAR(30) Nullable

SHOW EXCEPtions

SQL> SHOW {EXCEPtions | EXCEPtion name};

This command displays all the exceptions which have been defined in the current database. Details of the exception's error message and objects which use the exception - those which are dependant upon the exception - are also shown. You may display individual exception's details with the second FOR of the command.

SQL> show exceptions;

Exception Name                  Used by, Type
=============================== =============================================
CUSTOMER_CHECK                  SHIP_ORDER, Stored procedure
Msg: Overdue balance -- can not ship.

CUSTOMER_ON_HOLD                SHIP_ORDER, Stored procedure
Msg: This customer is on hold.

... 

SQL show exception customer_on_hold;

Exception Name                  Used by, Type
=============================== =============================================
CUSTOMER_ON_HOLD                SHIP_ORDER, Stored procedure
Msg: This customer is on hold.

SHOW FILTERs

SQL> SHOW {FILTERs | FILTER name};

This command displays a list of all known BLOB filters declared in the current database using the DECLARE FILTER command. The second form of the command allows the full details of a specific filter to be displayed.

SQL> show filter;

       FUNNEL
       ...

SQL> show filter funnel;
BLOB Filter: FUNNEL
        Input subtype: 2 Output subtype: 1
        Filter library is myfilterlib
        Entry point is blr2asc

SHOW FUNCtions

SQL> SHOW {FUNCtions | FUNCtion name};

This command allows a list of all external functions declared in the current database, to be displayed. External functions are those defined and coded in various UDF libraries.

The second form of the command allows the details of a specific function to be displayed.

SQL> show functions;

      ADDDAY           ADDDAY2
      ADDHOUR          ADDMILLISECOND
      ADDMINUTE        ADDMONTH
      ADDSECOND        ADDWEEK
      ADDYEAR

SQL> show function addyear;

Function ADDYEAR:
Function library is fbudf
Entry point is addYear
Returns TIMESTAMP
Argument 1: TIMESTAMP
Argument 2: INTEGER

SHOW GENERATORs

SQL> SHOW {GENERATORs | DOMAIN name};
SQL> SHOW {SEQuences | SEQuence name};

These two commands are identical. Generators was the old Firebird term for what are more commonly known as sequences in other databases, as well as the ANSII Standards. You are encouraged to use sequences rather than generators but isql considers them to be the same.

The first form of the commands above list all the sequences in the current database, while the second form displays details of a specific sequence.

SQL> show sequences;

Generator CUST_NO_GEN, current value is 1015
Generator EMP_NO_GEN, current value is 145

SQL> show sequence emp_no_gen;

Generator EMP_NO_GEN, current value is 145

SHOW GRANTs

SQL> SHOW {GRANTs | GRANT {object_name | role_name}};

This command displays a list of all grants in the current database if the first format of the command is used. The second drills down and displays only those details for the selected object, which may be a table, procedure, etc. Alternatively, if a role name is provided, only a list of users who have been granted that role will be displayed.

SQL> show grants;

/* Grant permissions for this database */
GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES
ON COUNTRY TO PUBLIC WITH GRANT OPTION
GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES
ON CUSTOMER TO PUBLIC WITH GRANT OPTION
...
GRANT SELECT ON EMPLOYEE TO ROLE DEFAULT_USER
...
GRANT EXECUTE ON PROCEDURE ADD_EMP_PROJ TO PUBLIC WITH GRANT OPTION
GRANT EXECUTE ON PROCEDURE ALL_LANGS TO PUBLIC WITH GRANT OPTION
...

SQL> show grants employee; 

GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES
ON EMPLOYEE TO PUBLIC WITH GRANT OPTION

SQL> show grants ship_order;

GRANT EXECUTE ON PROCEDURE SHIP_ORDER TO PUBLIC WITH GRANT OPTION

SQL> show grants default_user;

GRANT DEFAULT_USER TO SYSDBA

Note that some lines in the above have been split to allow them to fit on the page.

SHOW INDexes

SQL> SHOW {INDexes | INDICES}; 
SQL> SHOW {INDICES | INDexes} table_name;
SQL> SHOW INDex index_name;

The first form of this command will list all the indexes in the current database. In this form, you may specify either indexes or indices, they are treated as identical by Firebird. The second form of the command will display the list of indices for a specific table as determined by the table_name parameter. Again, you may specify indexes or indices. The final form of the command displays details of a given index and in this form of the command, you must use the keyword index.

SQL> show indices;

RDB$PRIMARY1 UNIQUE INDEX ON COUNTRY(COUNTRY)
CUSTNAMEX INDEX ON CUSTOMER(CUSTOMER)
...
SALESTATX INDEX ON SALES(ORDER_STATUS, PAID)

SQL> show indices employee;

NAMEX INDEX ON EMPLOYEE(LAST_NAME, FIRST_NAME)
RDB$FOREIGN8 INDEX ON EMPLOYEE(DEPT_NO)
RDB$FOREIGN9 INDEX ON EMPLOYEE(JOB_CODE, JOB_GRADE, JOB_COUNTRY)
RDB$PRIMARY7 UNIQUE INDEX ON EMPLOYEE(EMP_NO)

SQL> show index namex;

NAMEX INDEX ON EMPLOYEE(LAST_NAME, FIRST_NAME)

SHOW PROCedures

SQL> SHOW {PROCedures | PROCedure name};

This command allows a list of all procedures created in the current database, to be displayed. The second form of the command allows the details and source code to be shown for a specific procedure. See also the SHOW FUNCTIONs and SHOW TRIGGERs commands.

SQL> show procedures;

Procedure Name                    Invalid Dependency, Type
================================= ======= =====================================
ADD_EMP_PROJ                              EMPLOYEE_PROJECT, Table
                                          UNKNOWN_EMP_ID, Exception
ALL_LANGS                                 JOB, Table
                                          SHOW_LANGS, Procedure
...

SQL> show procedure all_langs;
Procedure text:
=============================================================================
   BEGIN
       FOR SELECT job_code, job_grade, job_country FROM job
               INTO :code, :grade, :country
       DO
       BEGIN
           FOR SELECT languages FROM show_langs
                   (:code, :grade, :country) INTO :lang DO
               SUSPEND;
           /* Put nice separators between rows */
           code = '=====';
           grade = '=====';
           country = '===============';
           lang = '==============';
           SUSPEND;
       END
   	END
=============================================================================
Parameters:
CODE                            OUTPUT VARCHAR(5)
GRADE                           OUTPUT VARCHAR(5)
COUNTRY                         OUTPUT VARCHAR(15)
LANG                            OUTPUT VARCHAR(15)

SHOW ROLEs

SQL> SHOW {ROLEs | ROLE name};

This command lists all the roles in the current database if the first form is used or, drills down to display a list of all the users who have been granted a specific role if the second form of the command is used.

SQL> show roles;

       DEFAULT_USER

SQL> show role default_user; 

Role DEFAULT_USER is granted to:

SYSDBA

SHOW SECCLAsses

SQL> SHOW SECCLAsses object_name;

This command displays details about the security classes for a given object. The object_name passed to the command need not be a table name, the command works for tables, procedures etc.

SQL> show secclasses employee;

Table's main sec class SQL$7
Table's default sec class SQL$DEFAULT7

SHOW SECURITY CLAsses

SQL> SHOW SECURITY CLAsses name;

This command always returns an error.

SQL> show security classes;
Command error: show security classes

SQL> show security classes employee;
Command error: show security_classes employee

SHOW SEQuences

The Firebird specific name, generator, has been updated to match the ANSII standard term sequence. The SHOW SEQuences command is identical to SHOW GENERATORs (above) and the output is identical.

SHOW SQL DIALECT

SQL> SHOW SQL DIALECT;

This command, which must be entered in full, shows the current database's dialect as well as the dialect used by the currently connected client.

SQL> show SQL Dialect;
        Client SQL dialect is set to: 3 and database SQL dialect is: 3

SHOW SYStem

SQL> SHOW SYStem [tables];

This command lists the internal, i.e. system, objects created and used in the current database. The optional parameter - tables - restricts the listing to show only tables. This applies from Firebird 2.0 onwards. Prior to version 2.0, the command would only list the system tables - equivalent to the SHOW SYSTEM TABLES command.

If no parameter is passed, the listing will display tables, functions (internal as opposed to external ones) and collations.

SQL> show system;
Tables:
       MON$ATTACHMENTS           MON$CALL_STACK
...
       RDB$USER_PRIVILEGES       RDB$VIEW_RELATIONS

Functions:
       RDB$GET_CONTEXT           RDB$SET_CONTEXT 

Collations:
       ASCII                     BIG_5
...
       WIN1258                   WIN_CZ
       WIN_CZ_CI_AI              WIN_PTBR

If you wish to drill down and display details of a specific object, simply use the corresponding command.

SQL> show table mon$io_stats;

MON$STAT_ID                 (RDB$STAT_ID) INTEGER Nullable
MON$STAT_GROUP              (RDB$STAT_GROUP) SMALLINT Nullable
MON$PAGE_READS              (RDB$COUNTER) BIGINT Nullable
MON$PAGE_WRITES             (RDB$COUNTER) BIGINT Nullable
MON$PAGE_FETCHES            (RDB$COUNTER) BIGINT Nullable
MON$PAGE_MARKS              (RDB$COUNTER) BIGINT Nullable

SQL> show function rdb$get_context;

Function RDB$GET_CONTEXT:
Function library is system_module
Entry point is get_context
Returns FREE_IT VARCHAR(255) CHARACTER SET NONE
Argument 1: NULL VARCHAR(80) CHARACTER SET NONE
Argument 2: NULL VARCHAR(80) CHARACTER SET NONE

SQL> show collation ascii;

ASCII, CHARACTER SET ASCII, PAD SPACE, SYSTEM

You will note that the SHOW FUNCtions command will display details of internal functions as well as those defined externally.

SHOW TABLEs

SQL> SHOW {TABLEs | TABLE name};

This command lists the user-defined tables in the database if the first form of the command is used, or displays the columns and data types or domains making up the table if the second form is used, with a table name supplied as a parameter.

SQL> show tables;

       COUNTRY                CUSTOMER
       DEPARTMENT             EMPLOYEE
       EMPLOYEE_PROJECT       JOB
       PROJECT                PROJ_DEPT_BUDGET
       SALARY_HISTORY         SALES

SQL> show table country;

COUNTRY                (COUNTRYNAME) VARCHAR(15) Not Null
CURRENCY               VARCHAR(10) Not Null
CONSTRAINT             INTEG_2:
  Primary key (COUNTRY)

You will note that if there are comments defined for a table, this command will not display them. You must use the SHOW COMMENTs command but be aware that you will then be given all comments in the database. There doesn't appear to be a method of extracting the comments for a single object, unless you query the system tables directly.

SQL> comment on table country is 'This table holds details about countries.';
SQL> commit;

SQL> show comments;
...
COMMENT ON TABLE COUNTRY IS This table holds details about countries.;
...

SQL> show table country;
COUNTRY                      (COUNTRYNAME) VARCHAR(15) Not Null
CURRENCY                     VARCHAR(10) Not Null
CONSTRAINT                   INTEG_2:
  Primary key (COUNTRY)

SQL> select rdb$description
CON> from rdb$relations
CON> where rdb$relation_name = 'COUNTRY';

  RDB$DESCRIPTION
=================
            6:1e7
==============================================================================
RDB$DESCRIPTION:
This is a table holding details about countries.
==============================================================================

The output from the final query above is not ideal, but at least it displays much less information if there are lots of comments in your database.

SHOW TRIGgers

SQL> SHOW {TRIGgers | TRIGger name};

This command allows a list of all triggers created in the current database to be displayed. The second form of the command allows the details and source code to be shown for a specific trigger. See also the SHOW PROCedures and SHOW FUNCtions commands.

SQL> show triggers;

Table name                       Trigger name                     Invalid
================================ ================================ =======
CUSTOMER                         SET_CUST_NO
EMPLOYEE                         SAVE_SALARY_CHANGE
EMPLOYEE                         SET_EMP_NO
SALES                            POST_NEW_ORDER

SQL> show trigger set_cust_no;

Triggers on Table CUSTOMER:
SET_CUST_NO, Sequence: 0, Type: BEFORE INSERT, Active
AS
BEGIN
    if (new.cust_no is null) then
    new.cust_no = gen_id(cust_no_gen, 1);
END
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

SHOW VERsion

SQL> SHOW VERsion;

This command displays details about the Firebird software, your database and the on disk structure (ODS) in use.

SQL> show version;

ISQL Version: LI-V2.5.1.26351 Firebird 2.5
Server version:
Firebird/linux AMD64 (access method),
version "LI-V2.5.1.26351 Firebird 2.5"
Firebird/linux AMD64 (remote server),
version "LI-V2.5.1.26351 Firebird 2.5/tcp (hubble)/P12"
Firebird/linux AMD64 (remote interface),
version "LI-V2.5.1.26351 Firebird 2.5/tcp (hubble)/P12"
on disk structure version 11.2

The above output has been adjusted to fit on the page. Each pair of lines beginning with Firebird and version are normally displayed as a single line. They are split over two lines here.

SHOW USERS

SQL> SHOW USERS;

This command shows a list of users who are currently connected to the database. If a user is logged in on more than one session, all sessions will be displayed separately.

SQL> show users;

Users in the database
# SYSDBA                # SYSDBA
# NORMAN

SHOW VIEWs

SQL> SHOW {VIEWs | VIEW name};

The first form of this command displays a list of all views in the current database. Drilling down using the second form of the command will display the columns and source code for a specific view.

SQL> show views;

       PHONE_LIST

SQL> show view phone_list;

EMP_NO                     (EMPNO) SMALLINT Not Null
FIRST_NAME                 (FIRSTNAME) VARCHAR(15) Not Null
LAST_NAME                  (LASTNAME) VARCHAR(20) Not Null
PHONE_EXT                  VARCHAR(4) Nullable
LOCATION                   VARCHAR(15) Nullable
PHONE_NO                   (PHONENUMBER) VARCHAR(20) Nullable
View Source:
==== ======
  SELECT
     emp_no, first_name, last_name, phone_ext, location, phone_no
     FROM employee, department
     WHERE employee.dept_no = department.dept_no