Skip to content

Commit 449df7d

Browse files
authored
Adds a fix for upgrades prior to rc.3 (#333)
* Adds a fix for upgrades prior to rc.3 * Fixes Linting Errors * Adapts Review Remarks
1 parent 70bcb25 commit 449df7d

3 files changed

Lines changed: 208 additions & 1 deletion

File tree

database/rc1_compatibility.sql

Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
-- ============================================================================
2+
-- Project : Eclipse BaSyx
3+
-- Organization : Fraunhofer IESE
4+
-- File Type : SQL Compatibility Script
5+
-- ----------------------------------------------------------------------------
6+
-- Description:
7+
-- Adds database timestamp columns missing from schemas created with 1.0.0-rc.1.
8+
--
9+
-- Copyright (c) Eclipse BaSyx Authors and Fraunhofer IESE
10+
-- SPDX-License-Identifier: MIT
11+
-- ============================================================================
12+
13+
ALTER TABLE IF EXISTS level_type ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
14+
ALTER TABLE IF EXISTS level_type ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
15+
ALTER TABLE IF EXISTS aas ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
16+
ALTER TABLE IF EXISTS aas ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
17+
ALTER TABLE IF EXISTS aas_payload ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
18+
ALTER TABLE IF EXISTS aas_payload ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
19+
ALTER TABLE IF EXISTS asset_information ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
20+
ALTER TABLE IF EXISTS asset_information ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
21+
ALTER TABLE IF EXISTS aas_submodel_reference ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
22+
ALTER TABLE IF EXISTS aas_submodel_reference ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
23+
ALTER TABLE IF EXISTS aas_submodel_reference_key ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
24+
ALTER TABLE IF EXISTS aas_submodel_reference_key ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
25+
ALTER TABLE IF EXISTS aas_submodel_reference_payload ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
26+
ALTER TABLE IF EXISTS aas_submodel_reference_payload ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
27+
ALTER TABLE IF EXISTS thumbnail_file_element ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
28+
ALTER TABLE IF EXISTS thumbnail_file_element ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
29+
ALTER TABLE IF EXISTS thumbnail_file_data ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
30+
ALTER TABLE IF EXISTS thumbnail_file_data ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
31+
ALTER TABLE IF EXISTS submodel ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
32+
ALTER TABLE IF EXISTS submodel ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
33+
ALTER TABLE IF EXISTS submodel_payload ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
34+
ALTER TABLE IF EXISTS submodel_payload ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
35+
ALTER TABLE IF EXISTS submodel_element ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
36+
ALTER TABLE IF EXISTS submodel_element ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
37+
ALTER TABLE IF EXISTS submodel_element_payload ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
38+
ALTER TABLE IF EXISTS submodel_element_payload ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
39+
ALTER TABLE IF EXISTS property_element ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
40+
ALTER TABLE IF EXISTS property_element ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
41+
ALTER TABLE IF EXISTS property_element_payload ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
42+
ALTER TABLE IF EXISTS property_element_payload ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
43+
ALTER TABLE IF EXISTS multilanguage_property_value ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
44+
ALTER TABLE IF EXISTS multilanguage_property_value ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
45+
ALTER TABLE IF EXISTS multilanguage_property_payload ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
46+
ALTER TABLE IF EXISTS multilanguage_property_payload ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
47+
ALTER TABLE IF EXISTS blob_element ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
48+
ALTER TABLE IF EXISTS blob_element ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
49+
ALTER TABLE IF EXISTS file_element ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
50+
ALTER TABLE IF EXISTS file_element ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
51+
ALTER TABLE IF EXISTS file_data ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
52+
ALTER TABLE IF EXISTS file_data ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
53+
ALTER TABLE IF EXISTS range_element ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
54+
ALTER TABLE IF EXISTS range_element ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
55+
ALTER TABLE IF EXISTS reference_element ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
56+
ALTER TABLE IF EXISTS reference_element ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
57+
ALTER TABLE IF EXISTS relationship_element ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
58+
ALTER TABLE IF EXISTS relationship_element ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
59+
ALTER TABLE IF EXISTS annotated_relationship_element ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
60+
ALTER TABLE IF EXISTS annotated_relationship_element ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
61+
ALTER TABLE IF EXISTS submodel_element_collection ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
62+
ALTER TABLE IF EXISTS submodel_element_collection ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
63+
ALTER TABLE IF EXISTS submodel_element_list ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
64+
ALTER TABLE IF EXISTS submodel_element_list ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
65+
ALTER TABLE IF EXISTS entity_element ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
66+
ALTER TABLE IF EXISTS entity_element ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
67+
ALTER TABLE IF EXISTS operation_element ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
68+
ALTER TABLE IF EXISTS operation_element ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
69+
ALTER TABLE IF EXISTS operation_variable ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
70+
ALTER TABLE IF EXISTS operation_variable ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
71+
ALTER TABLE IF EXISTS basic_event_element ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
72+
ALTER TABLE IF EXISTS basic_event_element ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
73+
ALTER TABLE IF EXISTS capability_element ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
74+
ALTER TABLE IF EXISTS capability_element ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
75+
ALTER TABLE IF EXISTS qualifier ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
76+
ALTER TABLE IF EXISTS qualifier ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
77+
ALTER TABLE IF EXISTS qualifier_payload ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
78+
ALTER TABLE IF EXISTS qualifier_payload ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
79+
ALTER TABLE IF EXISTS submodel_element_qualifier ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
80+
ALTER TABLE IF EXISTS submodel_element_qualifier ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
81+
ALTER TABLE IF EXISTS submodel_qualifier ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
82+
ALTER TABLE IF EXISTS submodel_qualifier ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
83+
ALTER TABLE IF EXISTS descriptor ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
84+
ALTER TABLE IF EXISTS descriptor ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
85+
ALTER TABLE IF EXISTS aas_identifier ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
86+
ALTER TABLE IF EXISTS aas_identifier ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
87+
ALTER TABLE IF EXISTS specific_asset_id ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
88+
ALTER TABLE IF EXISTS specific_asset_id ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
89+
ALTER TABLE IF EXISTS specific_asset_id_payload ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
90+
ALTER TABLE IF EXISTS specific_asset_id_payload ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
91+
ALTER TABLE IF EXISTS aas_descriptor_endpoint ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
92+
ALTER TABLE IF EXISTS aas_descriptor_endpoint ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
93+
ALTER TABLE IF EXISTS aas_descriptor ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
94+
ALTER TABLE IF EXISTS aas_descriptor ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
95+
ALTER TABLE IF EXISTS submodel_descriptor ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
96+
ALTER TABLE IF EXISTS submodel_descriptor ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
97+
ALTER TABLE IF EXISTS descriptor_payload ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
98+
ALTER TABLE IF EXISTS descriptor_payload ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
99+
ALTER TABLE IF EXISTS company_descriptor ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
100+
ALTER TABLE IF EXISTS company_descriptor ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
101+
ALTER TABLE IF EXISTS company_descriptor_name_option ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
102+
ALTER TABLE IF EXISTS company_descriptor_name_option ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
103+
ALTER TABLE IF EXISTS company_descriptor_asset_id_regex ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
104+
ALTER TABLE IF EXISTS company_descriptor_asset_id_regex ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
105+
ALTER TABLE IF EXISTS concept_description ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
106+
ALTER TABLE IF EXISTS concept_description ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
107+
ALTER TABLE IF EXISTS submodel_semantic_id_reference ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
108+
ALTER TABLE IF EXISTS submodel_semantic_id_reference ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
109+
ALTER TABLE IF EXISTS submodel_semantic_id_reference_key ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
110+
ALTER TABLE IF EXISTS submodel_semantic_id_reference_key ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
111+
ALTER TABLE IF EXISTS submodel_semantic_id_reference_payload ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
112+
ALTER TABLE IF EXISTS submodel_semantic_id_reference_payload ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
113+
ALTER TABLE IF EXISTS submodel_element_semantic_id_reference ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
114+
ALTER TABLE IF EXISTS submodel_element_semantic_id_reference ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
115+
ALTER TABLE IF EXISTS submodel_element_semantic_id_reference_key ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
116+
ALTER TABLE IF EXISTS submodel_element_semantic_id_reference_key ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
117+
ALTER TABLE IF EXISTS submodel_element_semantic_id_reference_payload ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
118+
ALTER TABLE IF EXISTS submodel_element_semantic_id_reference_payload ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
119+
ALTER TABLE IF EXISTS submodel_descriptor_semantic_id_reference ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
120+
ALTER TABLE IF EXISTS submodel_descriptor_semantic_id_reference ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
121+
ALTER TABLE IF EXISTS submodel_descriptor_semantic_id_reference_key ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
122+
ALTER TABLE IF EXISTS submodel_descriptor_semantic_id_reference_key ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
123+
ALTER TABLE IF EXISTS submodel_descriptor_semantic_id_reference_payload ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
124+
ALTER TABLE IF EXISTS submodel_descriptor_semantic_id_reference_payload ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
125+
ALTER TABLE IF EXISTS specific_asset_id_external_subject_id_reference ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
126+
ALTER TABLE IF EXISTS specific_asset_id_external_subject_id_reference ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
127+
ALTER TABLE IF EXISTS specific_asset_id_external_subject_id_reference_key ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
128+
ALTER TABLE IF EXISTS specific_asset_id_external_subject_id_reference_key ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
129+
ALTER TABLE IF EXISTS specific_asset_id_external_subject_id_reference_payload ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
130+
ALTER TABLE IF EXISTS specific_asset_id_external_subject_id_reference_payload ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
131+
ALTER TABLE IF EXISTS specific_asset_id_supplemental_semantic_id_reference ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
132+
ALTER TABLE IF EXISTS specific_asset_id_supplemental_semantic_id_reference ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
133+
ALTER TABLE IF EXISTS specific_asset_id_supplemental_semantic_id_reference_key ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
134+
ALTER TABLE IF EXISTS specific_asset_id_supplemental_semantic_id_reference_key ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
135+
ALTER TABLE IF EXISTS specific_asset_id_supplemental_semantic_id_reference_payload ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
136+
ALTER TABLE IF EXISTS specific_asset_id_supplemental_semantic_id_reference_payload ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
137+
ALTER TABLE IF EXISTS submodel_descriptor_supplemental_semantic_id_reference ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
138+
ALTER TABLE IF EXISTS submodel_descriptor_supplemental_semantic_id_reference ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
139+
ALTER TABLE IF EXISTS submodel_descriptor_supplemental_semantic_id_reference_key ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
140+
ALTER TABLE IF EXISTS submodel_descriptor_supplemental_semantic_id_reference_key ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
141+
ALTER TABLE IF EXISTS submodel_descriptor_supplemental_semantic_id_reference_payload ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
142+
ALTER TABLE IF EXISTS submodel_descriptor_supplemental_semantic_id_reference_payload ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
143+
ALTER TABLE IF EXISTS aasx_package ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
144+
ALTER TABLE IF EXISTS aasx_package ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
145+
ALTER TABLE IF EXISTS aasx_package_aas_id ADD COLUMN IF NOT EXISTS db_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
146+
ALTER TABLE IF EXISTS aasx_package_aas_id ADD COLUMN IF NOT EXISTS db_updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();

internal/basyxconfigurationservice/sequences/schema_upload.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,13 @@ func (su *SchemaUpload) Execute(stepIndex int) (int, error) {
7272
}
7373

7474
if _, err = su.ctx.DB.Exec(string(schemaSQL)); err != nil {
75-
return 1, fmt.Errorf("BASYXCFG-SCHEMA-EXECUTE: %w", err)
75+
if isRc01UpgradeError(err) {
76+
if err = su.applyRc01Compatibility(schemaToLoad); err != nil {
77+
return 1, err
78+
}
79+
}
80+
81+
return su.Execute(stepIndex)
7682
}
7783

7884
_, _ = fmt.Printf("[Step %d] Schema upload completed\n", stepIndex)
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/*******************************************************************************
2+
* Copyright (C) 2026 the Eclipse BaSyx Authors and Fraunhofer IESE
3+
*
4+
* Permission is hereby granted, free of charge, to any person obtaining
5+
* a copy of this software and associated documentation files (the
6+
* "Software"), to deal in the Software without restriction, including
7+
* without limitation the rights to use, copy, modify, merge, publish,
8+
* distribute, sublicense, and/or sell copies of the Software, and to
9+
* permit persons to whom the Software is furnished to do so, subject to
10+
* the following conditions:
11+
*
12+
* The above copyright notice and this permission notice shall be
13+
* included in all copies or substantial portions of the Software.
14+
*
15+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16+
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17+
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18+
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19+
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20+
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21+
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22+
*
23+
* SPDX-License-Identifier: MIT
24+
******************************************************************************/
25+
26+
package sequences
27+
28+
import (
29+
"fmt"
30+
"os"
31+
"path/filepath"
32+
"strings"
33+
)
34+
35+
const (
36+
errCaseRc01UpgradeFieldErr = "pq: column \"db_created_at\" does not exist (42703)"
37+
rc01CompatibilitySchemaFileName = "rc1_compatibility.sql"
38+
)
39+
40+
func (su *SchemaUpload) applyRc01Compatibility(schemaToLoad string) error {
41+
compatibilitySchemaPath := filepath.Join(filepath.Dir(schemaToLoad), rc01CompatibilitySchemaFileName)
42+
//nolint:gosec // only set by config service, not set via user input/config files
43+
compatibilitySQL, err := os.ReadFile(compatibilitySchemaPath)
44+
if err != nil {
45+
return fmt.Errorf("BASYXCFG-SCHEMA-RC01READFILE: %w", err)
46+
}
47+
if _, err = su.ctx.DB.Exec(string(compatibilitySQL)); err != nil {
48+
return fmt.Errorf("BASYXCFG-SCHEMA-RC01EXECUTE: %w", err)
49+
}
50+
return nil
51+
}
52+
53+
func isRc01UpgradeError(err error) bool {
54+
return strings.HasSuffix(err.Error(), errCaseRc01UpgradeFieldErr)
55+
}

0 commit comments

Comments
 (0)