Compare commits

...

2 Commits

Author SHA1 Message Date
Grzegorz Michalski
aa03dd1616 feat: Update FILE_MANAGER package to version 3.6.1 with fixes for CHAR/NCHAR/NVARCHAR2 column definitions 2026-03-13 09:11:28 +01:00
Grzegorz Michalski
9190681051 MARS-1409-POSTHOOK 2026-03-13 09:08:44 +01:00
3 changed files with 29 additions and 6 deletions

View File

@@ -1360,8 +1360,19 @@ AS
rec.quoted_column_name || ' VARCHAR2(' || rec.data_length || ')'
END
-- Other character types (preserve original logic)
WHEN rec.data_type IN ('CHAR', 'NCHAR', 'NVARCHAR2') THEN
rec.quoted_column_name || ' ' || rec.data_type || '(' || rec.data_length || ')'
-- MARS-1468: Fixed CHAR to use char_used/char_length (same as VARCHAR2 fix in MARS-1056)
WHEN rec.data_type = 'CHAR' THEN
CASE
WHEN rec.char_used = 'C' THEN
rec.quoted_column_name || ' CHAR(' || rec.char_length || ' CHAR)'
WHEN rec.char_used = 'B' THEN
rec.quoted_column_name || ' CHAR(' || rec.data_length || ' BYTE)'
ELSE
rec.quoted_column_name || ' CHAR(' || rec.data_length || ')'
END
-- MARS-1468: NCHAR/NVARCHAR2 - use char_length (data_length stores bytes in AL16UTF16, e.g. NCHAR(1) => data_length=2 but char_length=1)
WHEN rec.data_type IN ('NCHAR', 'NVARCHAR2') THEN
rec.quoted_column_name || ' ' || rec.data_type || '(' || rec.char_length || ')'
WHEN rec.data_type = 'NUMBER' THEN
rec.quoted_column_name || ' ' || rec.data_type ||
CASE
@@ -1396,8 +1407,13 @@ AS
-- Other TIMESTAMP types (without timezone)
-- SQL*Loader syntax: CHAR(length) DATE_FORMAT TIMESTAMP MASK "format" (not: TIMESTAMP 'format')
rec.quoted_column_name || ' CHAR(35) DATE_FORMAT TIMESTAMP MASK ' || CHR(39) || NORMALIZE_DATE_FORMAT(GET_DATE_FORMAT(pTemplateTableName => pTemplateTableName, pColumnName => rec.column_name)) || CHR(39)
WHEN rec.data_type IN ('CHAR', 'NCHAR', 'VARCHAR2', 'NVARCHAR2') THEN
-- For CSV field definitions, use data_length for CHAR() specification
WHEN rec.data_type IN ('VARCHAR2', 'CHAR') THEN
-- MARS-1468: For CHAR use char_length when char semantics (C), otherwise data_length
rec.quoted_column_name || ' CHAR(' ||
CASE WHEN rec.char_used = 'C' THEN rec.char_length ELSE rec.data_length END
|| ')'
WHEN rec.data_type IN ('NCHAR', 'NVARCHAR2') THEN
-- For CSV field definitions, use data_length for NCHAR/NVARCHAR2
rec.quoted_column_name || ' CHAR(' || rec.data_length || ')'
ELSE
rec.quoted_column_name

View File

@@ -17,12 +17,13 @@ AS
**/
-- Package Version Information (Semantic Versioning: MAJOR.MINOR.PATCH)
PACKAGE_VERSION CONSTANT VARCHAR2(10) := '3.6.0';
PACKAGE_BUILD_DATE CONSTANT VARCHAR2(20) := '2026-02-27 09:00:00';
PACKAGE_VERSION CONSTANT VARCHAR2(10) := '3.6.1';
PACKAGE_BUILD_DATE CONSTANT VARCHAR2(20) := '2026-03-13 09:00:00';
PACKAGE_AUTHOR CONSTANT VARCHAR2(100) := 'Grzegorz Michalski';
-- Version History (Latest changes first)
VERSION_HISTORY CONSTANT VARCHAR2(4000) :=
'3.6.1 (2026-03-13): MARS-1468 - Fixed CHAR/NCHAR/NVARCHAR2 column definitions in GENERATE_EXTERNAL_TABLE_PARAMS: CHAR now uses char_used/char_length semantics; NCHAR/NVARCHAR2 use char_length (data_length stores bytes in AL16UTF16)' || CHR(13)||CHR(10) ||
'3.6.0 (2026-02-27): MARS-1409 - Added A_WORKFLOW_HISTORY_KEY tracking in A_SOURCE_FILE_RECEIVED. Each file now stores its workflow execution key extracted during VALIDATE_SOURCE_FILE_RECEIVED' || CHR(13)||CHR(10) ||
'3.5.1 (2026-02-24): Fixed TIMESTAMP field syntax in GENERATE_EXTERNAL_TABLE_PARAMS for SQL*Loader compatibility (CHAR(35) DATE_FORMAT TIMESTAMP MASK format)' || CHR(13)||CHR(10) ||
'3.3.2 (2026-02-20): MARS-828 - Fixed threshold column names in GET_DET_SOURCE_FILE_CONFIG_INFO for MARS-828 compatibility' || CHR(13)||CHR(10) ||

View File

@@ -93,6 +93,12 @@ echo 'yes' | sql "ADMIN/Cloudpass#34@ggmichalski_high" "@install_mars1409.sql"
echo 'yes' | sql "ADMIN/Cloudpass#34@ggmichalski_high" "@rollback_mars1409.sql"
7z a -pMojeSuperHaslo#123 -mhe=on M1409_arch.7z MARS-1409
cd MARS_Packages\REL02_POST\MARS-1409-POSTHOOK
echo 'yes' | sql "ADMIN/Cloudpass#34@ggmichalski_high" "@install_mars1409_posthook.sql"
echo 'yes' | sql "ADMIN/Cloudpass#34@ggmichalski_high" "@rollback_mars1409_posthook.sql"
7z a -pMojeSuperHaslo#123 -mhe=on M1409PH_arch.7z MARS-1409-POSTHOOK
cd .\MARS_Packages\REL03\MARS-1005
echo 'yes' | sql "ADMIN/Cloudpass#34@ggmichalski_high" "@install_mars1005.sql"
echo 'yes' | sql "ADMIN/Cloudpass#34@ggmichalski_high" "@rollback_mars1005.sql"