mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-24 10:43:03 +01:00
428 lines
15 KiB
Plaintext
428 lines
15 KiB
Plaintext
/*
|
|
* The contents of this file are subject to the Interbase Public
|
|
* License Version 1.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.Inprise.com/IPL.html
|
|
*
|
|
* Software distributed under the License is distributed on an
|
|
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
|
|
* or implied. See the License for the specific language governing
|
|
* rights and limitations under the License.
|
|
*
|
|
* The Original Code was created by Inprise Corporation
|
|
* and its predecessors. Portions created by Inprise Corporation are
|
|
* Copyright (C) Inprise Corporation.
|
|
*
|
|
* All Rights Reserved.
|
|
* Contributor(s): ______________________________________.
|
|
*/
|
|
/*
|
|
* This file documents the difference between
|
|
* InterBase Version 3.3D ODS 7.2 metadata structure.
|
|
* and
|
|
* InterBase Version 4.0 ODS 8.0 metadata structure.
|
|
*
|
|
*******IMPORTANT****** Do not actually run this script, it will
|
|
* Create a database which cannot be accessed
|
|
* by either V3 or V4!
|
|
*
|
|
* This script can be used to re-create the development
|
|
* tool yachts.fdb, but must be edited as follows:
|
|
* - Delete all DELETE's of global fields.
|
|
* - Delete all MODIFY's of global fields.
|
|
* - Delete all DROP/ADD (modify) pairs in MODIFY RELATION's
|
|
* - Delete all DROP fields in MODIFY RELATIONS's
|
|
* - Delete all "position **" parts in MODIFY RELATION's
|
|
* - Delete all "DROP INDEX"
|
|
* Also, it is not necessary to keep any
|
|
* - CREATE INDEX
|
|
* - DEFINE TRIGGER
|
|
*
|
|
* Sorting as as follows:
|
|
* Global fields: Name
|
|
* Relations: Relation ID
|
|
* Indices: Created order
|
|
* Generators: Created order
|
|
* Triggers: Created order
|
|
*
|
|
* Note: Sources for system triggers are missing, but many
|
|
* can be found in jrd/grant.gdl. The compiled
|
|
* blr versions are in jrd/trig.h. Note that the compiled
|
|
* blr has been hand-edited in a few places.
|
|
*
|
|
* Note: You can run this script by globally replacing "RDB$"
|
|
* with "XRDB$", it will then make user relations
|
|
* with the specified system structure.
|
|
*
|
|
* This script was tested by
|
|
* a) running ods72.gdl (after replacing RDB -> XRDB)
|
|
* b) running ods80chg.gdl
|
|
* c) extracting the resulting data
|
|
* d) running ods80.gdl
|
|
* e) extracting and comparing against step c).
|
|
*
|
|
*/
|
|
|
|
modify database "v33d_ods72.fdb";
|
|
|
|
|
|
/* Global Field Definitions */
|
|
|
|
/*
|
|
* Note: Most text fields in system relations have been changed to:
|
|
* Character set: UNICODE_FSS
|
|
* Subtype: 3 (Metadata)
|
|
*/
|
|
|
|
/* --- needs to be performed in a separate gdef invoke --- */
|
|
/* delete field RDB$DEFAULT_VALUE;
|
|
* delete field RDB$DEPENDENCY_TYPE;
|
|
*/
|
|
|
|
/* EXTERNAL_DESCRIPTION was subtype 7 in V3.3 */
|
|
/* FILE_NAME was 123 characters in V3.3 */
|
|
|
|
modify field RDB$EXTERNAL_DESCRIPTION blob segment_length 80 sub_type 8;
|
|
modify field RDB$FILE_NAME varying [253];
|
|
|
|
|
|
define field RDB$CHARACTER_SET_ID short;
|
|
define field RDB$CHARACTER_SET_NAME char [31];
|
|
define field RDB$COLLATION_ID short;
|
|
define field RDB$COLLATION_NAME char [31];
|
|
define field RDB$CONSTRAINT_NAME char [31];
|
|
define field RDB$CONSTRAINT_TYPE char [11];
|
|
define field RDB$DEFERRABLE char [3];
|
|
define field RDB$EXCEPTION_NAME char [31];
|
|
define field RDB$EXCEPTION_NUMBER long;
|
|
define field RDB$FILE_PARTITIONS short;
|
|
define field RDB$FILE_P_OFFSET long;
|
|
define field RDB$MATCH_OPTION char [7];
|
|
define field RDB$NULL_FLAG short;
|
|
define field RDB$NUMBER_OF_CHARACTERS long;
|
|
define field RDB$OBJECT_TYPE short;
|
|
define field RDB$PARAMETER_NAME char [31];
|
|
define field RDB$PARAMETER_NUMBER short;
|
|
define field RDB$PARAMETER_TYPE short;
|
|
define field RDB$PROCEDURE_BLR blob segment_length 80 sub_type BLR;
|
|
define field RDB$PROCEDURE_ID short;
|
|
define field RDB$PROCEDURE_NAME char [31];
|
|
define field RDB$PROCEDURE_PARAMETERS short;
|
|
define field RDB$RULE char [11];
|
|
define field RDB$VALUE blob segment_length 80 sub_type BLR;
|
|
|
|
|
|
/* Relation Definitions */
|
|
|
|
/* Notes:
|
|
* Not all changes to relation fields due to "based on" are
|
|
* tracked in this list.
|
|
*
|
|
* Not all changes due to position are tracked.
|
|
*/
|
|
|
|
|
|
modify relation RDB$DATABASE
|
|
add field RDB$CHARACTER_SET_NAME position 3;
|
|
|
|
modify relation RDB$FIELDS
|
|
drop field RDB$COMPUTED_BLR,
|
|
add field RDB$COMPUTED_BLR based on RDB$VALUE position 4,
|
|
drop field RDB$DEFAULT_VALUE,
|
|
add field RDB$DEFAULT_VALUE based on RDB$VALUE position 6,
|
|
drop field RDB$MISSING_VALUE,
|
|
add field RDB$MISSING_VALUE based on RDB$VALUE position 11,
|
|
|
|
add field RDB$DEFAULT_SOURCE based on RDB$SOURCE position 7,
|
|
add field RDB$MISSING_SOURCE based on RDB$SOURCE position 13,
|
|
add field RDB$NULL_FLAG position 23,
|
|
add field RDB$CHARACTER_LENGTH based on RDB$FIELD_LENGTH position 24,
|
|
add field RDB$COLLATION_ID position 25,
|
|
add field RDB$CHARACTER_SET_ID position 26;
|
|
|
|
modify relation RDB$INDICES
|
|
add field RDB$EXPRESSION_BLR based on RDB$VALUE,
|
|
add field RDB$EXPRESSION_SOURCE based on RDB$SOURCE;
|
|
|
|
modify relation RDB$RELATION_FIELDS
|
|
drop field RDB$DEFAULT_VALUE,
|
|
add field RDB$DEFAULT_VALUE based on RDB$VALUE position 12,
|
|
|
|
add field RDB$NULL_FLAG position 16,
|
|
add field RDB$DEFAULT_SOURCE based on RDB$SOURCE position 17,
|
|
add field RDB$COLLATION_ID position 18;
|
|
|
|
modify relation RDB$RELATIONS
|
|
add field RDB$FLAGS based on RDB$SYSTEM_FLAG position 15;
|
|
|
|
|
|
modify relation RDB$TRIGGERS
|
|
add field RDB$FLAGS based on RDB$SYSTEM_FLAG position 9;
|
|
|
|
modify relation RDB$DEPENDENCIES
|
|
drop field RDB$OBJECT_NAME,
|
|
drop field RDB$RELATION_NAME,
|
|
drop field RDB$DEPENDENCY_TYPE,
|
|
add field RDB$DEPENDENT_NAME based on RDB$GENERIC_NAME position 0,
|
|
add field RDB$DEPENDED_ON_NAME based on RDB$GENERIC_NAME position 1,
|
|
add field RDB$DEPENDENT_TYPE based on RDB$OBJECT_TYPE position 3,
|
|
add field RDB$DEPENDED_ON_TYPE based on RDB$OBJECT_TYPE position 4;
|
|
|
|
modify relation RDB$FUNCTION_ARGUMENTS
|
|
add field RDB$CHARACTER_SET_ID position 7;
|
|
|
|
modify relation RDB$USER_PRIVILEGES
|
|
add field RDB$USER_TYPE based on RDB$OBJECT_TYPE position 6,
|
|
add field RDB$OBJECT_TYPE position 7;
|
|
|
|
define relation RDB$RELATION_CONSTRAINTS
|
|
RDB$CONSTRAINT_NAME position 0,
|
|
RDB$CONSTRAINT_TYPE position 1,
|
|
RDB$RELATION_NAME position 2,
|
|
RDB$DEFERRABLE position 3,
|
|
RDB$INITIALLY_DEFERRED based on RDB$DEFERRABLE position 4,
|
|
RDB$INDEX_NAME position 5;
|
|
|
|
define relation RDB$REF_CONSTRAINTS
|
|
RDB$CONSTRAINT_NAME position 0,
|
|
RDB$CONST_NAME_UQ based on RDB$CONSTRAINT_NAME position 1,
|
|
RDB$MATCH_OPTION position 2,
|
|
RDB$UPDATE_RULE based on RDB$RULE position 3,
|
|
RDB$DELETE_RULE based on RDB$RULE position 4;
|
|
|
|
define relation RDB$CHECK_CONSTRAINTS
|
|
RDB$CONSTRAINT_NAME position 0,
|
|
RDB$TRIGGER_NAME position 1;
|
|
|
|
define relation RDB$LOG_FILES
|
|
RDB$FILE_NAME position 0,
|
|
RDB$FILE_SEQUENCE position 1,
|
|
RDB$FILE_LENGTH position 2,
|
|
RDB$FILE_PARTITIONS position 3,
|
|
RDB$FILE_P_OFFSET position 4,
|
|
RDB$FILE_FLAGS position 5;
|
|
|
|
define relation RDB$PROCEDURES
|
|
RDB$PROCEDURE_NAME position 0,
|
|
RDB$PROCEDURE_ID position 1,
|
|
RDB$PROCEDURE_INPUTS based on RDB$PROCEDURE_PARAMETERS position 2,
|
|
RDB$PROCEDURE_OUTPUTS based on RDB$PROCEDURE_PARAMETERS position 3,
|
|
RDB$DESCRIPTION position 4,
|
|
RDB$PROCEDURE_SOURCE based on RDB$SOURCE position 5,
|
|
RDB$PROCEDURE_BLR position 6,
|
|
RDB$SECURITY_CLASS position 7,
|
|
RDB$OWNER_NAME based on RDB$USER position 8,
|
|
RDB$RUNTIME position 9,
|
|
RDB$SYSTEM_FLAG position 10;
|
|
|
|
define relation RDB$PROCEDURE_PARAMETERS
|
|
RDB$PARAMETER_NAME position 0,
|
|
RDB$PROCEDURE_NAME position 1,
|
|
RDB$PARAMETER_NUMBER position 2,
|
|
RDB$PARAMETER_TYPE position 3,
|
|
RDB$FIELD_SOURCE based on RDB$FIELD_NAME position 4,
|
|
RDB$DESCRIPTION position 5,
|
|
RDB$SYSTEM_FLAG position 6;
|
|
|
|
define relation RDB$CHARACTER_SETS
|
|
RDB$CHARACTER_SET_NAME position 0,
|
|
RDB$FORM_OF_USE based on RDB$GENERIC_NAME position 1,
|
|
RDB$NUMBER_OF_CHARACTERS position 2,
|
|
RDB$DEFAULT_COLLATE_NAME based on RDB$COLLATION_NAME position 3,
|
|
RDB$CHARACTER_SET_ID position 4,
|
|
RDB$SYSTEM_FLAG position 5,
|
|
RDB$DESCRIPTION position 6,
|
|
RDB$FUNCTION_NAME position 7,
|
|
RDB$BYTES_PER_CHARACTER based on RDB$FIELD_LENGTH position 8;
|
|
|
|
define relation RDB$COLLATIONS
|
|
RDB$COLLATION_NAME position 0,
|
|
RDB$COLLATION_ID position 1,
|
|
RDB$CHARACTER_SET_ID position 2,
|
|
RDB$COLLATION_ATTRIBUTES based on RDB$GENERIC_TYPE position 3,
|
|
RDB$SYSTEM_FLAG position 4,
|
|
RDB$DESCRIPTION position 5,
|
|
RDB$FUNCTION_NAME position 6;
|
|
|
|
define relation RDB$EXCEPTIONS
|
|
RDB$EXCEPTION_NAME position 0,
|
|
RDB$EXCEPTION_NUMBER position 1,
|
|
RDB$MESSAGE position 2,
|
|
RDB$DESCRIPTION position 3,
|
|
RDB$SYSTEM_FLAG position 4;
|
|
|
|
|
|
/* Index Definitions */
|
|
|
|
/* Several V3.3 Indices changed number for V4:
|
|
* 12 -> 15
|
|
* 13 -> 16
|
|
* 14 -> 17
|
|
*/
|
|
|
|
drop index RDB$INDEX_15;
|
|
|
|
define index RDB$INDEX_12_v4 for RDB$RELATION_CONSTRAINTS unique
|
|
RDB$CONSTRAINT_NAME;
|
|
|
|
define index RDB$INDEX_13_v4 for RDB$REF_CONSTRAINTS unique
|
|
RDB$CONSTRAINT_NAME;
|
|
|
|
define index RDB$INDEX_14_v4 for RDB$CHECK_CONSTRAINTS
|
|
RDB$CONSTRAINT_NAME;
|
|
|
|
define index RDB$INDEX_18 for RDB$PROCEDURE_PARAMETERS unique
|
|
RDB$PROCEDURE_NAME,
|
|
RDB$PARAMETER_NAME;
|
|
|
|
define index RDB$INDEX_19 for RDB$CHARACTER_SETS unique
|
|
RDB$CHARACTER_SET_NAME;
|
|
|
|
define index RDB$INDEX_20 for RDB$COLLATIONS unique
|
|
RDB$COLLATION_NAME;
|
|
|
|
define index RDB$INDEX_21 for RDB$PROCEDURES unique
|
|
RDB$PROCEDURE_NAME;
|
|
|
|
define index RDB$INDEX_22 for RDB$PROCEDURES
|
|
RDB$PROCEDURE_ID;
|
|
|
|
define index RDB$INDEX_23 for RDB$EXCEPTIONS unique
|
|
RDB$EXCEPTION_NAME;
|
|
|
|
define index RDB$INDEX_24 for RDB$EXCEPTIONS
|
|
RDB$EXCEPTION_NUMBER;
|
|
|
|
define index RDB$INDEX_25 for RDB$CHARACTER_SETS unique
|
|
RDB$CHARACTER_SET_ID;
|
|
|
|
define index RDB$INDEX_26 for RDB$COLLATIONS unique
|
|
RDB$COLLATION_ID,
|
|
RDB$CHARACTER_SET_ID;
|
|
|
|
|
|
/* Generator Definitions */
|
|
|
|
|
|
define generator RDB$PROCEDURES;
|
|
define generator RDB$EXCEPTIONS;
|
|
define generator RDB$CONSTRAINT_NAME;
|
|
define generator RDB$FIELD_NAME;
|
|
define generator RDB$INDEX_NAME;
|
|
define generator RDB$TRIGGER_NAME;
|
|
|
|
/* Trigger Definitions */
|
|
|
|
/*
|
|
* Trigger Messages for all V4 system triggers have been modified
|
|
* to the name of the system error to report.
|
|
*
|
|
* This section does not document changes to trigger implementation,
|
|
* just the set of system triggers added for V4.
|
|
*/
|
|
|
|
|
|
define trigger RDB$TRIGGER_26 for RDB$RELATION_CONSTRAINTS
|
|
pre store 0:
|
|
end_trigger
|
|
message 1: 'constaint_on_view',
|
|
message 2: 'invld_cnstrnt_type',
|
|
message 3: 'primary_key_exists';
|
|
|
|
define trigger RDB$TRIGGER_25 for RDB$RELATION_CONSTRAINTS
|
|
pre modify 0:
|
|
end_trigger
|
|
message 1: 'rel_cnstrnt_update';
|
|
|
|
define trigger RDB$TRIGGER_10 for RDB$RELATION_CONSTRAINTS
|
|
pre erase 0:
|
|
end_trigger
|
|
message 1: 'primary_key_ref',
|
|
message 2: 'primary_key_notnull';
|
|
|
|
define trigger RDB$TRIGGER_11 for RDB$RELATION_CONSTRAINTS
|
|
post erase 0:
|
|
end_trigger;
|
|
|
|
define trigger RDB$TRIGGER_12 for RDB$REF_CONSTRAINTS
|
|
pre store 0:
|
|
end_trigger
|
|
message 1: 'ref_cnstrnt_notfound',
|
|
message 2: 'foreign_key_notfound';
|
|
|
|
define trigger RDB$TRIGGER_13 for RDB$REF_CONSTRAINTS
|
|
pre modify 0:
|
|
end_trigger
|
|
message 1: 'ref_cnstrnt_update';
|
|
|
|
define trigger RDB$TRIGGER_14 for RDB$CHECK_CONSTRAINTS
|
|
pre modify 0:
|
|
end_trigger
|
|
message 1: 'check_cnstrnt_update';
|
|
|
|
define trigger RDB$TRIGGER_15 for RDB$CHECK_CONSTRAINTS
|
|
pre erase 0:
|
|
end_trigger
|
|
message 1: 'check_cnstrnt_del';
|
|
|
|
define trigger RDB$TRIGGER_16 for RDB$CHECK_CONSTRAINTS
|
|
post erase 0:
|
|
end_trigger;
|
|
|
|
define trigger RDB$TRIGGER_17 for RDB$INDEX_SEGMENTS
|
|
pre erase 0:
|
|
end_trigger
|
|
message 1: 'integ_index_seg_del';
|
|
|
|
define trigger RDB$TRIGGER_18 for RDB$INDEX_SEGMENTS
|
|
pre modify 0:
|
|
end_trigger
|
|
message 1: 'integ_index_seg_mod';
|
|
|
|
define trigger RDB$TRIGGER_19 for RDB$INDICES
|
|
pre erase 0:
|
|
end_trigger
|
|
message 1: 'integ_index_del';
|
|
|
|
define trigger RDB$TRIGGER_20 for RDB$INDICES
|
|
pre modify 0:
|
|
end_trigger
|
|
message 1: 'integ_index_mod';
|
|
|
|
define trigger RDB$TRIGGER_21 for RDB$TRIGGERS
|
|
pre erase 0:
|
|
end_trigger
|
|
message 1: 'check_trig_del';
|
|
|
|
define trigger RDB$TRIGGER_22 for RDB$TRIGGERS
|
|
pre modify 0:
|
|
end_trigger
|
|
message 1: 'check_trig_update';
|
|
|
|
define trigger RDB$TRIGGER_23 for RDB$RELATION_FIELDS
|
|
pre erase 0:
|
|
end_trigger
|
|
message 1: 'cnstrnt_fld_del';
|
|
|
|
define trigger RDB$TRIGGER_24 for RDB$RELATION_FIELDS
|
|
pre modify 0:
|
|
end_trigger
|
|
message 1: 'cnstrnt_fld_rename';
|
|
|
|
define trigger RDB$TRIGGER_27 for RDB$RELATION_FIELDS
|
|
post erase 0:
|
|
end_trigger;
|
|
|
|
define trigger RDB$TRIGGER_28 for RDB$PROCEDURES
|
|
pre store 0:
|
|
end_trigger;
|
|
|
|
define trigger RDB$TRIGGER_29 for RDB$PROCEDURES
|
|
pre modify 0:
|
|
end_trigger;
|
|
|
|
define trigger RDB$TRIGGER_30 for RDB$EXCEPTIONS
|
|
pre store 0:
|
|
end_trigger;
|
|
|