Commit 6fc7f8fd authored by gmantele's avatar gmantele
Browse files

[TAP] Add a TAP 1.1 feature: table_index and column_index in TAP_SCHEMA.

These two columns let recommend an order, respectively, for tables in their
schema, and columns in their table.
In addition of these new columns, "arraysize" has been also added.
All these new columns are already supported when creating a TAP_SCHEMA from
an XML file.
parent 04a00fe2
Loading
Loading
Loading
Loading
+110 −0
Original line number Diff line number Diff line
-- SQL Script based on TAP 1.1 (http://www.ivoa.net/documents/TAP/20160428/WD-TAP-1.1-20160428.pdf)
-- 
-- DESCRIPTION:
--     This script aims to migrate from a TAP_SCHEMA already existing into a TAP_SCHEMA as described
--     by the IVOA in the version 1.1 of the TAP standard.
-- 
--     This script is executed using 3 distinct and successive transactions: one for the step 0,
--     another one for the step 1 (actually managed by the script tap_schema_1.1.sql) and a last
--     one for the rest of the script.
-- 
-- WARNING 1: FORMER TAP_SCHEMA NOT DESTROYED
--     This SQL script does not destroy the former TAP_SCHEMA ; it is just renaming it into "old_TAP_SCHEMA".
--     It is particularly useful if you had added non-standard tables and/or columns. Thus, all former information
--     are still stored somewhere so that you can import them again with your own SQL script.

--     If you however want the former TAP_SCHEMA to be destroyed, just uncomment the last instruction of this SQL script:
--     the step 5 (i.e. the DROP SCHEMA ... CASCADE).
-- 
-- WARNING 2: SPECIAL COLUMN "DBNAME"
--     The special column "dbname" is expected in TAP_SCHEMA.schemas, TAP_SCHEMA.tables and TAP_SCHEMA.columns.
--     It is a column possibly expected by the TAP Library in order to perform an easy matching between ADQL names
--     and DB names during the ADQL to SQL translation. It allows to have different schema, table and/or column
--     name in ADQL/TAP than in the real database.
-- 
--     If your TAP_SCHEMA does not already have this column, you must uncomment the 3 commented lines of the step
--     2 of this script.
-- 
-- NOTE: 
--     Tested and designed for PostgreSQL ; it may work with some modifications for other DBMS
-- 
-- AUTHOR: Grégory Mantelet (ARI)
-- DATE  : July 2016


BEGIN;

-- 0. CHANGE THE SCHEMA NAME OF TAP_SCHEMA 1.0:

ALTER SCHEMA "TAP_SCHEMA" RENAME TO "old_TAP_SCHEMA";

-- 0bis. FIX SOME POSSIBLE PROBLEM WITH NULL VALUES:

UPDATE "old_TAP_SCHEMA"."tables" SET table_type = 'table'
	WHERE table_type IS NULL;

UPDATE "old_TAP_SCHEMA"."columns" SET indexed = 0
	WHERE indexed IS NULL;

UPDATE "old_TAP_SCHEMA"."columns" SET principal = 0
	WHERE principal IS NULL;

UPDATE "old_TAP_SCHEMA"."columns" SET std = 0
	WHERE std IS NULL;

COMMIT;

-- 1. CREATE TAP_SCHEMA IN VERSION 1.1:

\i tap_schema_1.1.sql

BEGIN;

-- 2. ADD THE SPECIAL COLUMN 'dbname' POSSIBLY USED BY THE TAP LIBRARY:

--ALTER TABLE "old_TAP_SCHEMA"."schemas" ADD COLUMN "dbname" VARCHAR;
--ALTER TABLE "old_TAP_SCHEMA"."tables"  ADD COLUMN "dbname" VARCHAR;
--ALTER TABLE "old_TAP_SCHEMA"."columns" ADD COLUMN "dbname" VARCHAR;
 
ALTER TABLE "TAP_SCHEMA"."schemas" ADD COLUMN "dbname" VARCHAR;
ALTER TABLE "TAP_SCHEMA"."tables"  ADD COLUMN "dbname" VARCHAR;
ALTER TABLE "TAP_SCHEMA"."columns" ADD COLUMN "dbname" VARCHAR;

-- 3. FILL THE NEW TAP_SCHEMA WITH THE FORMER VALUES (except those of TAP_SCHEMA):

INSERT INTO "TAP_SCHEMA"."schemas"
	(SELECT *
	 FROM "old_TAP_SCHEMA"."schemas"
	 WHERE LOWER("schema_name") <> 'tap_schema');

INSERT INTO "TAP_SCHEMA"."tables"
	(SELECT schema_name, table_name, table_type, description, utype, -1 AS "table_index", dbname
	 FROM "old_TAP_SCHEMA"."tables"
	 WHERE LOWER("schema_name") <> 'tap_schema');

INSERT INTO "TAP_SCHEMA"."columns"
	(SELECT table_name, column_name, datatype, "size" AS "arraysize", "size", c.description, c.utype, unit, ucd, indexed, principal, std, -1 AS "column_index", c.dbname
	 FROM "old_TAP_SCHEMA"."columns" c JOIN "old_TAP_SCHEMA"."tables" USING("table_name")
	 WHERE LOWER("schema_name") <> 'tap_schema');

INSERT INTO "TAP_SCHEMA"."keys"
	(SELECT *
	 FROM "old_TAP_SCHEMA"."keys");

INSERT INTO "TAP_SCHEMA"."key_columns"
	(SELECT *
	 FROM "old_TAP_SCHEMA"."key_columns");

-- 4. CHANGE THE table_index of TAP_SCHEMA tables so that they are at the end when ordering by ascending table_index:

UPDATE "TAP_SCHEMA"."tables" SET "table_index" = (SELECT COUNT(*) FROM "TAP_SCHEMA"."tables")-5 WHERE LOWER("schema_name") = 'tap_schema' AND LOWER("table_name") IN ('schemas', 'tap_schema.schemas');
UPDATE "TAP_SCHEMA"."tables" SET "table_index" = (SELECT COUNT(*) FROM "TAP_SCHEMA"."tables")-4 WHERE LOWER("schema_name") = 'tap_schema' AND LOWER("table_name") IN ('tables', 'tap_schema.tables');
UPDATE "TAP_SCHEMA"."tables" SET "table_index" = (SELECT COUNT(*) FROM "TAP_SCHEMA"."tables")-3 WHERE LOWER("schema_name") = 'tap_schema' AND LOWER("table_name") IN ('columns', 'tap_schema.columns');
UPDATE "TAP_SCHEMA"."tables" SET "table_index" = (SELECT COUNT(*) FROM "TAP_SCHEMA"."tables")-2 WHERE LOWER("schema_name") = 'tap_schema' AND LOWER("table_name") IN ('keys', 'tap_schema.keys');
UPDATE "TAP_SCHEMA"."tables" SET "table_index" = (SELECT COUNT(*) FROM "TAP_SCHEMA"."tables")-1 WHERE LOWER("schema_name") = 'tap_schema' AND LOWER("table_name") IN ('key_columns', 'tap_schema.key_columns');

-- 5. REMOVE THE FORMER TAP_SCHEMA:

--DROP SCHEMA "old_TAP_SCHEMA" CASCADE;

COMMIT;
+77 −0
Original line number Diff line number Diff line
-- SQL Script based on TAP 1.0 (http://www.ivoa.net/Documents/TAP/20100327/REC-TAP-1.0.pdf)
-- 
-- DESCRIPTION:
--     This script create the schema TAP_SCHEMA and all its standard tables, as defined by the TAP standard
--     in the version 1.0.
-- 
--     The whole script is executed in a transaction in order to avoid partial creation of TAP_SCHEMA
--     in case of an SQL error.
-- 
-- NOTE:
--     Tested and designed for PostgreSQL ; it may work with some modifications for other DBMS
-- 
-- AUTHOR: Grégory Mantelet (ARI)
-- DATE  : July 2016


BEGIN;

-- 0. CREATE SCHEMA TAP_SCHEMA

CREATE SCHEMA "TAP_SCHEMA";

-- 1. CREATE TABLES TAP_SCHEMA.*

CREATE TABLE "TAP_SCHEMA"."schemas"     ("schema_name" VARCHAR PRIMARY KEY, "description" VARCHAR           , "utype" VARCHAR);
CREATE TABLE "TAP_SCHEMA"."tables"      ("schema_name" VARCHAR            , "table_name" VARCHAR PRIMARY KEY, "table_type" VARCHAR   , "description" VARCHAR, "utype" VARCHAR, PRIMARY KEY("table_name"));
CREATE TABLE "TAP_SCHEMA"."columns"     ("table_name" VARCHAR             , "column_name" VARCHAR           , "description" VARCHAR  , "unit" VARCHAR       , "ucd" VARCHAR  , "utype" VARCHAR, "datatype" VARCHAR, "size" INTEGER, "principal" SMALLINT CHECK("principal" BETWEEN 0 AND 1), "indexed" SMALLINT CHECK("indexed" BETWEEN 0 AND 1), "std" SMALLINT CHECK("std" BETWEEN 0 AND 1), PRIMARY KEY("table_name","column_name"));
CREATE TABLE "TAP_SCHEMA"."keys"        ("key_id" VARCHAR PRIMARY KEY     , "from_table" VARCHAR            , "target_table" VARCHAR , "description" VARCHAR, "utype" VARCHAR);
CREATE TABLE "TAP_SCHEMA"."key_columns" ("key_id" VARCHAR                 , "from_column" VARCHAR           , "target_column" VARCHAR, PRIMARY KEY("key_id", "from_column", "target_column"));

-- 2. FILL TAP_SCHEMA.schemas

INSERT INTO "TAP_SCHEMA"."schemas" VALUES ('TAP_SCHEMA', 'Set of tables listing and describing the schemas, tables and columns published in this TAP service.', NULL);

-- 2bis. FILL TAP_SCHEMA.tables

INSERT INTO "TAP_SCHEMA"."tables" VALUES ('TAP_SCHEMA', 'TAP_SCHEMA.schemas'    , 'table', 'List of schemas published in this TAP service.'                                                                                                                                 , NULL);
INSERT INTO "TAP_SCHEMA"."tables" VALUES ('TAP_SCHEMA', 'TAP_SCHEMA.tables'     , 'table', 'List of tables published in this TAP service.'                                                                                                                                  , NULL);
INSERT INTO "TAP_SCHEMA"."tables" VALUES ('TAP_SCHEMA', 'TAP_SCHEMA.columns'    , 'table', 'List of columns of all tables listed in TAP_SCHEMA.TABLES and published in this TAP service.'                                                                                   , NULL);
INSERT INTO "TAP_SCHEMA"."tables" VALUES ('TAP_SCHEMA', 'TAP_SCHEMA.keys'       , 'table', 'List all foreign keys but provides just the tables linked by the foreign key. To know which columns of these tables are linked, see in TAP_SCHEMA.key_columns using the key_id.', NULL);
INSERT INTO "TAP_SCHEMA"."tables" VALUES ('TAP_SCHEMA', 'TAP_SCHEMA.key_columns', 'table', 'List all foreign keys but provides just the columns linked by the foreign key. To know the table of these columns, see in TAP_SCHEMA.keys using the key_id.'                    , NULL);

-- 2ter. FILL TAP_SCHEMA.columns

INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.schemas', 'schema_name', 'schema name, possibly qualified'            , NULL, NULL, NULL, 'VARCHAR', -1, 1, 1, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.schemas', 'description', 'brief description of schema'                , NULL, NULL, NULL, 'VARCHAR', -1, 1, 0, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.schemas', 'utype'      , 'UTYPE if schema corresponds to a data model', NULL, NULL, NULL, 'VARCHAR', -1, 0, 0, 1);

INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.tables', 'schema_name', 'the schema name from TAP_SCHEMA.schemas'   , NULL, NULL, NULL, 'VARCHAR', -1, 1, 1, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.tables', 'table_name' , 'table name as it should be used in queries', NULL, NULL, NULL, 'VARCHAR', -1, 1, 1, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.tables', 'table_type' , 'one of: table, view'                       , NULL, NULL, NULL, 'VARCHAR', -1, 0, 0, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.tables', 'description', 'brief description of table'                , NULL, NULL, NULL, 'VARCHAR', -1, 1, 0, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.tables', 'utype'      , 'UTYPE if table corresponds to a data model', NULL, NULL, NULL, 'VARCHAR', -1, 0, 0, 1);

INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.columns', 'table_name' , 'table name from TAP_SCHEMA.tables'              , NULL, NULL, NULL, 'VARCHAR', -1, 1, 1, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.columns', 'column_name', 'column name'                                    , NULL, NULL, NULL, 'VARCHAR', -1, 1, 1, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.columns', 'description', 'brief description of column'                    , NULL, NULL, NULL, 'VARCHAR', -1, 1, 0, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.columns', 'unit'       , 'unit in VO standard format'                     , NULL, NULL, NULL, 'VARCHAR', -1, 1, 0, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.columns', 'ucd'        , 'UCD of column if any'                           , NULL, NULL, NULL, 'VARCHAR', -1, 1, 0, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.columns', 'utype'      , 'UTYPE of column if any'                         , NULL, NULL, NULL, 'VARCHAR', -1, 0, 0, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.columns', 'datatype'   , 'ADQL datatype as in section 2.5'                , NULL, NULL, NULL, 'VARCHAR', -1, 1, 0, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.columns', 'size'       , 'length of variable length datatypes'            , NULL, NULL, NULL, 'INTEGER', -1, 0, 0, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.columns', 'principal'  , 'a principal column; 1 means true, 0 means false', NULL, NULL, NULL, 'INTEGER', -1, 0, 0, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.columns', 'indexed'    , 'an indexed column; 1 means true, 0 means false' , NULL, NULL, NULL, 'INTEGER', -1, 0, 0, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.columns', 'std'        , 'a standard column; 1 means true, 0 means false' , NULL, NULL, NULL, 'INTEGER', -1, 0, 0, 1);

INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.keys', 'key_id'      , 'unique key identifier'     , NULL, NULL, NULL, 'VARCHAR', -1, 1, 1, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.keys', 'from_table'  , 'fully qualified table name', NULL, NULL, NULL, 'VARCHAR', -1, 1, 0, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.keys', 'target_table', 'fully qualified table name', NULL, NULL, NULL, 'VARCHAR', -1, 1, 0, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.keys', 'description' , 'description of this key'   , NULL, NULL, NULL, 'VARCHAR', -1, 1, 0, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.keys', 'utype'       , 'utype of this key'         , NULL, NULL, NULL, 'VARCHAR', -1, 0, 0, 1);

INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.key_columns', 'key_id'       , 'unique key identifier'              , NULL, NULL, NULL, 'VARCHAR', -1, 1, 1, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.key_columns', 'from_column'  , 'key column name in the from_table'  , NULL, NULL, NULL, 'VARCHAR', -1, 1, 1, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.key_columns', 'target_column', 'key column name in the target_table', NULL, NULL, NULL, 'VARCHAR', -1, 1, 1, 1);

COMMIT;
+83 −0
Original line number Diff line number Diff line
-- SQL Script based on TAP 1.1 (http://www.ivoa.net/documents/TAP/20160428/WD-TAP-1.1-20160428.pdf)
-- 
-- DESCRIPTION:
--     This script create the schema TAP_SCHEMA and all its standard tables, as defined by the TAP standard
--     in the version 1.1.
-- 
--     The whole script is executed in a transaction in order to avoid partial creation of TAP_SCHEMA
--     in case of an SQL error.
-- 
-- NOTE:
--     Tested and designed for PostgreSQL ; it may work with some modifications for other DBMS
-- 
-- AUTHOR: Grégory Mantelet (ARI)
-- DATE  : July 2016


BEGIN;

-- 0. CREATE SCHEMA TAP_SCHEMA

CREATE SCHEMA "TAP_SCHEMA";

-- 1. CREATE TABLES TAP_SCHEMA.*

-- WARNING: the order of columns in TAP_SCHEMA.columns has changed between tap_schema_1.0.sql and tap_schema_1.1.sql!
--          All your own ingestion SQL scripts should be adapted except if the order of columns is explicitly given in the INSERT INTO instruction.

CREATE TABLE "TAP_SCHEMA"."schemas"     ("schema_name" VARCHAR PRIMARY KEY, "description" VARCHAR           , "utype" VARCHAR);
CREATE TABLE "TAP_SCHEMA"."tables"      ("schema_name" VARCHAR NOT NULL   , "table_name" VARCHAR PRIMARY KEY, "table_type" VARCHAR NOT NULL DEFAULT 'table'  , "description" VARCHAR, "utype" VARCHAR, "table_index" INTEGER DEFAULT -1);
CREATE TABLE "TAP_SCHEMA"."columns"     ("table_name" VARCHAR             , "column_name" VARCHAR           , "datatype" VARCHAR NOT NULL    , "arraysize" INTEGER  , "size" INTEGER , "description" VARCHAR, "utype" VARCHAR, "unit" VARCHAR, "ucd" VARCHAR, "indexed" SMALLINT NOT NULL DEFAULT 0 CHECK("indexed" BETWEEN 0 AND 1), "principal" SMALLINT NOT NULL DEFAULT 0 CHECK("principal" BETWEEN 0 AND 1), "std" SMALLINT NOT NULL DEFAULT 0 CHECK("std" BETWEEN 0 AND 1), "column_index" INTEGER DEFAULT -1, PRIMARY KEY("table_name","column_name"));
CREATE TABLE "TAP_SCHEMA"."keys"        ("key_id" VARCHAR PRIMARY KEY     , "from_table" VARCHAR NOT NULL   , "target_table" VARCHAR NOT NULL, "description" VARCHAR, "utype" VARCHAR);
CREATE TABLE "TAP_SCHEMA"."key_columns" ("key_id" VARCHAR                 , "from_column" VARCHAR           , "target_column" VARCHAR        , PRIMARY KEY("key_id", "from_column", "target_column"));

-- 2. FILL TAP_SCHEMA.schemas

INSERT INTO "TAP_SCHEMA"."schemas" VALUES ('TAP_SCHEMA', 'Set of tables listing and describing the schemas, tables and columns published in this TAP service.', NULL);

-- 2bis. FILL TAP_SCHEMA.tables

INSERT INTO "TAP_SCHEMA"."tables" VALUES ('TAP_SCHEMA', 'TAP_SCHEMA.schemas'    , 'table', 'List of schemas published in this TAP service.'                                                                                                                                 , NULL, 0);
INSERT INTO "TAP_SCHEMA"."tables" VALUES ('TAP_SCHEMA', 'TAP_SCHEMA.tables'     , 'table', 'List of tables published in this TAP service.'                                                                                                                                  , NULL, 1);
INSERT INTO "TAP_SCHEMA"."tables" VALUES ('TAP_SCHEMA', 'TAP_SCHEMA.columns'    , 'table', 'List of columns of all tables listed in TAP_SCHEMA.TABLES and published in this TAP service.'                                                                                   , NULL, 2);
INSERT INTO "TAP_SCHEMA"."tables" VALUES ('TAP_SCHEMA', 'TAP_SCHEMA.keys'       , 'table', 'List all foreign keys but provides just the tables linked by the foreign key. To know which columns of these tables are linked, see in TAP_SCHEMA.key_columns using the key_id.', NULL, 3);
INSERT INTO "TAP_SCHEMA"."tables" VALUES ('TAP_SCHEMA', 'TAP_SCHEMA.key_columns', 'table', 'List all foreign keys but provides just the columns linked by the foreign key. To know the table of these columns, see in TAP_SCHEMA.keys using the key_id.'                    , NULL, 4);

-- 2ter. FILL TAP_SCHEMA.columns

INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.schemas', 'schema_name', 'VARCHAR', -1, -1, 'schema name, possibly qualified'            , NULL, NULL, NULL, 1, 1, 1, 0);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.schemas', 'description', 'VARCHAR', -1, -1, 'brief description of schema'                , NULL, NULL, NULL, 0, 1, 1, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.schemas', 'utype'      , 'VARCHAR', -1, -1, 'UTYPE if schema corresponds to a data model', NULL, NULL, NULL, 0, 0, 1, 2);

INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.tables', 'table_index', 'INTEGER', -1, -1, 'this index is used to recommend table ordering for clients' , NULL, NULL, NULL, 0, 0, 1, 0);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.tables', 'schema_name', 'VARCHAR', -1, -1, 'the schema name from TAP_SCHEMA.schemas'                    , NULL, NULL, NULL, 0, 1, 1, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.tables', 'table_name' , 'VARCHAR', -1, -1, 'table name as it should be used in queries'                 , NULL, NULL, NULL, 1, 1, 1, 2);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.tables', 'table_type' , 'VARCHAR', -1, -1, 'one of: table, view'                                        , NULL, NULL, NULL, 0, 0, 1, 3);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.tables', 'description', 'VARCHAR', -1, -1, 'brief description of table'                                 , NULL, NULL, NULL, 0, 1, 1, 4);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.tables', 'utype'      , 'VARCHAR', -1, -1, 'UTYPE if table corresponds to a data model'                 , NULL, NULL, NULL, 0, 0, 1, 5);

INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.columns', 'column_index', 'INTEGER' , -1, -1, 'this index is used to recommend column ordering for clients' , NULL, NULL, NULL, 0, 0, 1, 0);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.columns', 'table_name'  , 'VARCHAR' , -1, -1, 'table name from TAP_SCHEMA.tables'                           , NULL, NULL, NULL, 1, 1, 1, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.columns', 'column_name' , 'VARCHAR' , -1, -1, 'column name'                                                 , NULL, NULL, NULL, 1, 1, 1, 2);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.columns', 'datatype'    , 'VARCHAR' , -1, -1, 'an XType or a TAPType'                                       , NULL, NULL, NULL, 0, 1, 1, 3);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.columns', 'arraysize'   , 'INTEGER' , -1, -1, 'length of variable length datatypes'                         , NULL, NULL, NULL, 0, 0, 1, 4);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.columns', '"size"'      , 'INTEGER' , -1, -1, 'same as "arraysize" but kept for backward compatibility only', NULL, NULL, NULL, 0, 0, 1, 5);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.columns', 'description' , 'VARCHAR' , -1, -1, 'brief description of column'                                 , NULL, NULL, NULL, 0, 1, 1, 6);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.columns', 'utype'       , 'VARCHAR' , -1, -1, 'UTYPE of column if any'                                      , NULL, NULL, NULL, 0, 0, 1, 7);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.columns', 'unit'        , 'VARCHAR' , -1, -1, 'unit in VO standard format'                                  , NULL, NULL, NULL, 0, 1, 1, 8);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.columns', 'ucd'         , 'VARCHAR' , -1, -1, 'UCD of column if any'                                        , NULL, NULL, NULL, 0, 1, 1, 9);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.columns', 'indexed'     , 'SMALLINT', -1, -1, 'an indexed column; 1 means true, 0 means false'              , NULL, NULL, NULL, 0, 0, 1, 10);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.columns', 'principal'   , 'SMALLINT', -1, -1, 'a principal column; 1 means true, 0 means false'             , NULL, NULL, NULL, 0, 0, 1, 11);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.columns', 'std'         , 'SMALLINT', -1, -1, 'a standard column; 1 means true, 0 means false'              , NULL, NULL, NULL, 0, 0, 1, 12);

INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.keys', 'key_id'      , 'VARCHAR', -1, -1, 'unique key identifier'     , NULL, NULL, NULL, 1, 1, 1, 0);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.keys', 'from_table'  , 'VARCHAR', -1, -1, 'fully qualified table name', NULL, NULL, NULL, 0, 1, 1, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.keys', 'target_table', 'VARCHAR', -1, -1, 'fully qualified table name', NULL, NULL, NULL, 0, 1, 1, 2);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.keys', 'description' , 'VARCHAR', -1, -1, 'description of this key'   , NULL, NULL, NULL, 0, 1, 1, 3);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.keys', 'utype'       , 'VARCHAR', -1, -1, 'utype of this key'         , NULL, NULL, NULL, 0, 0, 1, 4);

INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.key_columns', 'key_id'       , 'VARCHAR', -1, -1, 'unique key identifier'              , NULL, NULL, NULL, 1, 1, 1, 0);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.key_columns', 'from_column'  , 'VARCHAR', -1, -1, 'key column name in the from_table'  , NULL, NULL, NULL, 1, 1, 1, 1);
INSERT INTO "TAP_SCHEMA"."columns" VALUES ('TAP_SCHEMA.key_columns', 'target_column', 'VARCHAR', -1, -1, 'key column name in the target_table', NULL, NULL, NULL, 1, 1, 1, 2);

COMMIT;
+86 −0

File added.

Preview size limit exceeded, changes collapsed.

+2 −2
Original line number Diff line number Diff line
@@ -167,7 +167,7 @@ import tap.data.DataReadException;
 * </p>
 * 
 * @author Gr&eacute;gory Mantelet (ARI)
 * @version 1.4 (04/2016)
 * @version 1.4 (07/2016)
 * @since 1.4
 * 
 * @see PostgreSQLTranslator
@@ -329,7 +329,7 @@ public abstract class JDBCTranslator implements ADQLTranslator {
	 * @return					The string buffer + identifier.
	 */
	public StringBuffer appendIdentifier(final StringBuffer str, final String id, final boolean caseSensitive){
		if (caseSensitive)
		if (caseSensitive && !id.matches("\"[^\"]*\""))
			return str.append('"').append(id).append('"');
		else
			return str.append(id);
Loading