Afkorten tekstveld via cast lukt niet bij laden data uit Metacom

Bij het laden van data uit Metacom in SQL Server merken we dat alle Metacom-velden een varchar(max) lengte hebben. Dit staat ook in de PostgreSQL-database van Metacom.

Het kopieren gaat met:

create or replace table mcTABEL@sql
as
select *
from  TABEL@mc

We hebben geprobeerd de veldlengte onderweg te veranderen via cast, maar deze nieuwe lengte komt niet door. Hoe kan ik de lengte van tekstvelden onderweg beperken?

Het probleem is reproduceerbaar met:

create or replace table mc_dpersoneel@sql
as
select cast(dummy_string_int64 as varchar2(2) not null) korter
from   dual@datadictionary

Het veld korter is nog steeds onbeperkt qua lengte en optioneel qua inhoud.

Dit probleem speelt nog in release 22.0.699 en 22.1.248-BETA:

create or replace table test@inmemorystorage
as
select code code
,      cast(code as varchar2(2)) alt
from   exactonlinerest..journals@eol

select name
,      DATABASE_DATA_TYPE
,      MAX_LENGTH
from   SYSTEMTABLECOLUMNS@DataDictionary
where  table_name = 'TEST'
and    provider_name='InMemoryStorage'
and    name != 'rowid$'

met als resultaat:

Naam Database Data type Maximum Lengte
alt varchar2 null
code varchar2 20

Dit gedrag is ongewijzigd in release 24.0.180 met hetzelfde resultaat.