blob: 6696adeeb6e8ff677177a39d71b60a2c6cb3eca7 [file] [log] [blame]
ij> --
-- Licensed to the Apache Software Foundation (ASF) under one or more
-- contributor license agreements. See the NOTICE file distributed with
-- this work for additional information regarding copyright ownership.
-- The ASF licenses this file to You under the Apache License, Version 2.0
-- (the "License"); you may not use this file except in compliance with
-- the License. You may obtain a copy of the License at
--
-- http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
--
-- This test will cover SHOW TABLES, SHOW SCHEMAS, etc.
-- and the DESCRIBE command.
-- first, set schema to sys and demonstrate that we can see the system tables.
SET SCHEMA SYS;
0 rows inserted/updated/deleted
ij> SHOW TABLES;
TABLE_SCHEM |TABLE_NAME |REMARKS
------------------------------------------------------------------------
SYS |SYSALIASES |
SYS |SYSCHECKS |
SYS |SYSCOLPERMS |
SYS |SYSCOLUMNS |
SYS |SYSCONGLOMERATES |
SYS |SYSCONSTRAINTS |
SYS |SYSDEPENDS |
SYS |SYSFILES |
SYS |SYSFOREIGNKEYS |
SYS |SYSKEYS |
SYS |SYSPERMS |
SYS |SYSROLES |
SYS |SYSROUTINEPERMS |
SYS |SYSSCHEMAS |
SYS |SYSSEQUENCES |
SYS |SYSSTATEMENTS |
SYS |SYSSTATISTICS |
SYS |SYSTABLEPERMS |
SYS |SYSTABLES |
SYS |SYSTRIGGERS |
SYS |SYSUSERS |
SYS |SYSVIEWS |
SYSIBM |SYSDUMMY1 |
ij> SET SCHEMA APP;
0 rows inserted/updated/deleted
ij> CREATE TABLE t1 (i int generated always as identity, d DECIMAL(5,2), test VARCHAR(20));
0 rows inserted/updated/deleted
ij> CREATE SCHEMA USER1;
0 rows inserted/updated/deleted
ij> SET SCHEMA = USER1;
0 rows inserted/updated/deleted
ij> CREATE TABLE t2 (i int);
0 rows inserted/updated/deleted
ij> CREATE SYNONYM USER1.T3 FOR USER1.T2;
0 rows inserted/updated/deleted
ij> CREATE VIEW v1 AS SELECT * from app.t1;
0 rows inserted/updated/deleted
ij> CREATE INDEX idx1 ON APP.t1 (test ASC);
0 rows inserted/updated/deleted
ij> CREATE PROCEDURE APP.PROCTEST(IN A INTEGER, OUT B DECIMAL(10,2))
PARAMETER STYLE JAVA READS SQL DATA LANGUAGE JAVA
EXTERNAL NAME 'a.b.c.d.e';
0 rows inserted/updated/deleted
ij> CREATE FUNCTION APP.FUNCTTEST(A INTEGER)
RETURNS INTEGER
PARAMETER STYLE JAVA
LANGUAGE JAVA
NO SQL
EXTERNAL NAME 'a.b.c.d.e.f';
0 rows inserted/updated/deleted
ij> -- first display all tables, then display tables in one schema
SHOW TABLES;
TABLE_SCHEM |TABLE_NAME |REMARKS
------------------------------------------------------------------------
SYS |SYSALIASES |
SYS |SYSCHECKS |
SYS |SYSCOLPERMS |
SYS |SYSCOLUMNS |
SYS |SYSCONGLOMERATES |
SYS |SYSCONSTRAINTS |
SYS |SYSDEPENDS |
SYS |SYSFILES |
SYS |SYSFOREIGNKEYS |
SYS |SYSKEYS |
SYS |SYSPERMS |
SYS |SYSROLES |
SYS |SYSROUTINEPERMS |
SYS |SYSSCHEMAS |
SYS |SYSSEQUENCES |
SYS |SYSSTATEMENTS |
SYS |SYSSTATISTICS |
SYS |SYSTABLEPERMS |
SYS |SYSTABLES |
SYS |SYSTRIGGERS |
SYS |SYSUSERS |
SYS |SYSVIEWS |
SYSIBM |SYSDUMMY1 |
APP |T1 |
USER1 |T2 |
ij> SHOW TABLES IN APP;
TABLE_SCHEM |TABLE_NAME |REMARKS
------------------------------------------------------------------------
APP |T1 |
ij> SHOW TABLES IN app;
TABLE_SCHEM |TABLE_NAME |REMARKS
------------------------------------------------------------------------
APP |T1 |
ij> -- 'describe t1' will give error, as not in current schema
DESCRIBE t1;
IJ ERROR: No table exists with the name T1
ij> DESCRIBE APP.t1;
COLUMN_NAME |TYPE_NAME|DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL&
------------------------------------------------------------------------------
I |INTEGER |0 |10 |10 |AUTOINCRE&|NULL |NO
D |DECIMAL |2 |10 |5 |NULL |NULL |YES
TEST |VARCHAR |NULL|NULL|20 |NULL |40 |YES
ij> DESCRIBE app.t1;
COLUMN_NAME |TYPE_NAME|DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL&
------------------------------------------------------------------------------
I |INTEGER |0 |10 |10 |AUTOINCRE&|NULL |NO
D |DECIMAL |2 |10 |5 |NULL |NULL |YES
TEST |VARCHAR |NULL|NULL|20 |NULL |40 |YES
ij> DESCRIBE v1;
COLUMN_NAME |TYPE_NAME|DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL&
------------------------------------------------------------------------------
I |INTEGER |0 |10 |10 |NULL |NULL |NO
D |DECIMAL |2 |10 |5 |NULL |NULL |YES
TEST |VARCHAR |NULL|NULL|20 |NULL |40 |YES
ij> SHOW SCHEMAS;
TABLE_SCHEM
------------------------------
APP
NULLID
SQLJ
SYS
SYSCAT
SYSCS_DIAG
SYSCS_UTIL
SYSFUN
SYSIBM
SYSPROC
SYSSTAT
USER1
ij> SHOW VIEWS IN USER1;
TABLE_SCHEM |TABLE_NAME |REMARKS
------------------------------------------------------------------------
USER1 |V1 |
ij> SHOW PROCEDURES IN APP;
PROCEDURE_SCHEM |PROCEDURE_NAME |REMARKS
------------------------------------------------------------------------
APP |PROCTEST |a.b.c.d.e
ij> SHOW FUNCTIONS IN APP;
FUNCTION_SCHEM|FUNCTION_NAME |REMARKS
-------------------------------------------------------------------------------
APP |FUNCTTEST |a.b.c.d.e.f
ij> SHOW FUNCTIONS;
FUNCTION_SCHEM|FUNCTION_NAME |REMARKS
-------------------------------------------------------------------------------
APP |FUNCTTEST |a.b.c.d.e.f
SYSCS_UTIL |SYSCS_CHECK_TABLE |org.apache.derby.catalog.SystemPro&
SYSCS_UTIL |SYSCS_GET_DATABASE_NAME |org.apache.derby.catalog.SystemPro&
SYSCS_UTIL |SYSCS_GET_DATABASE_PROPERTY |org.apache.derby.catalog.SystemPro&
SYSCS_UTIL |SYSCS_GET_RUNTIMESTATISTICS |org.apache.derby.catalog.SystemPro&
SYSCS_UTIL |SYSCS_GET_USER_ACCESS |org.apache.derby.catalog.SystemPro&
SYSCS_UTIL |SYSCS_GET_XPLAIN_MODE |org.apache.derby.catalog.SystemPro&
SYSCS_UTIL |SYSCS_GET_XPLAIN_SCHEMA |org.apache.derby.catalog.SystemPro&
SYSCS_UTIL |SYSCS_PEEK_AT_IDENTITY |org.apache.derby.catalog.SystemPro&
SYSCS_UTIL |SYSCS_PEEK_AT_SEQUENCE |org.apache.derby.catalog.SystemPro&
SYSIBM |BLOBCREATELOCATOR |org.apache.derby.impl.jdbc.LOBStor&
SYSIBM |BLOBGETBYTES |org.apache.derby.impl.jdbc.LOBStor&
SYSIBM |BLOBGETLENGTH |org.apache.derby.impl.jdbc.LOBStor&
SYSIBM |BLOBGETPOSITIONFROMBYTES |org.apache.derby.impl.jdbc.LOBStor&
SYSIBM |BLOBGETPOSITIONFROMLOCATOR |org.apache.derby.impl.jdbc.LOBStor&
SYSIBM |CLOBCREATELOCATOR |org.apache.derby.impl.jdbc.LOBStor&
SYSIBM |CLOBGETLENGTH |org.apache.derby.impl.jdbc.LOBStor&
SYSIBM |CLOBGETPOSITIONFROMLOCATOR |org.apache.derby.impl.jdbc.LOBStor&
SYSIBM |CLOBGETPOSITIONFROMSTRING |org.apache.derby.impl.jdbc.LOBStor&
SYSIBM |CLOBGETSUBSTRING |org.apache.derby.impl.jdbc.LOBStor&
ij> SHOW SYNONYMS IN USER1;
TABLE_SCHEM |TABLE_NAME |REMARKS
------------------------------------------------------------------------
USER1 |T3 |
ij> --
-- DERBY-4553
--
GET SCROLL INSENSITIVE CURSOR CURS AS 'SELECT * FROM APP.T1';
ij> GETCURRENTROWNUMBER CURS;
0
ij> CLOSE CURS;
ij> -- DERBY-2019: ensure that tables with mixed-case names can be described:
SET SCHEMA APP;
0 rows inserted/updated/deleted
ij> create table "CamelCaseTable" (c1 int, c2 varchar(20));
0 rows inserted/updated/deleted
ij> -- should fail, as unquoted stirng is treated as case-insensitive upper case:
describe CamelCaseTable;
IJ ERROR: No table exists with the name CAMELCASETABLE
ij> describe APP.CamelCaseTable;
IJ ERROR: No table exists with the name CAMELCASETABLE
ij> -- should find the table, as quoted string case is preserved.
describe 'CamelCaseTable';
COLUMN_NAME |TYPE_NAME|DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL&
------------------------------------------------------------------------------
C1 |INTEGER |0 |10 |10 |NULL |NULL |YES
C2 |VARCHAR |NULL|NULL|20 |NULL |40 |YES
ij> -- should fail, as case is wrong:
describe 'CAMELCaseTable';
IJ ERROR: No table exists with the name CAMELCaseTable
ij> -- should work, note that schema name must be upper case:
describe 'APP.CamelCaseTable';
COLUMN_NAME |TYPE_NAME|DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL&
------------------------------------------------------------------------------
C1 |INTEGER |0 |10 |10 |NULL |NULL |YES
C2 |VARCHAR |NULL|NULL|20 |NULL |40 |YES
ij> set SCHEMA USER1;
0 rows inserted/updated/deleted
ij> -- should work, even after changing default schema, so long as schema is right
describe 'APP.CamelCaseTable';
COLUMN_NAME |TYPE_NAME|DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL&
------------------------------------------------------------------------------
C1 |INTEGER |0 |10 |10 |NULL |NULL |YES
C2 |VARCHAR |NULL|NULL|20 |NULL |40 |YES
ij> -- should fail, since table is in the other schema
describe 'CamelCaseTable';
IJ ERROR: No table exists with the name CamelCaseTable
ij> -- Can use * as a wildcard for table name:
describe '*';
TABLE_SCHEM |TABLE_NAME |COLUMN_NAME |TYPE_NAME|DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL&
------------------------------------------------------------------------------------------------------------------------
USER1 |T2 |I |INTEGER |0 |10 |10 |NULL |NULL |YES
USER1 |V1 |I |INTEGER |0 |10 |10 |NULL |NULL |NO
USER1 |V1 |D |DECIMAL |2 |10 |5 |NULL |NULL |YES
USER1 |V1 |TEST |VARCHAR |NULL|NULL|20 |NULL |40 |YES
ij> describe 'APP.*';
TABLE_SCHEM |TABLE_NAME |COLUMN_NAME |TYPE_NAME|DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL&
------------------------------------------------------------------------------------------------------------------------
APP |CamelCaseTable |C1 |INTEGER |0 |10 |10 |NULL |NULL |YES
APP |CamelCaseTable |C2 |VARCHAR |NULL|NULL|20 |NULL |40 |YES
APP |T1 |I |INTEGER |0 |10 |10 |AUTOINCRE&|NULL |NO
APP |T1 |D |DECIMAL |2 |10 |5 |NULL |NULL |YES
APP |T1 |TEST |VARCHAR |NULL|NULL|20 |NULL |40 |YES
ij> -- Observe behavior with empty string:
describe '';
IJ ERROR: No table exists with the name (missing)
ij> --DERBY-2785:ij "describe" built in command cannot describe a table named "run"
create table run(c1 int, c2 varchar(20));
0 rows inserted/updated/deleted
ij> --should work
describe run;
COLUMN_NAME |TYPE_NAME|DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL&
------------------------------------------------------------------------------
C1 |INTEGER |0 |10 |10 |NULL |NULL |YES
C2 |VARCHAR |NULL|NULL|20 |NULL |40 |YES
ij> create table "run"(c1 int, c2 varchar(20));
0 rows inserted/updated/deleted
ij> --should work
describe 'run';
COLUMN_NAME |TYPE_NAME|DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL&
------------------------------------------------------------------------------
C1 |INTEGER |0 |10 |10 |NULL |NULL |YES
C2 |VARCHAR |NULL|NULL|20 |NULL |40 |YES
ij>