Releaseopmerkingen voor serverloze compute
In dit artikel worden de functies en het gedrag uitgelegd die momenteel beschikbaar en gepland zijn op serverloze berekeningen voor notebooks en taken.
Zie Verbinding maken met serverloze berekeningen voor meer informatie over serverloze berekeningen.
Azure Databricks brengt regelmatig updates uit voor serverloze berekeningen, en werkt automatisch de serverloze rekenruntime bij om verbeteringen en upgrades naar het platform te ondersteunen. Alle gebruikers krijgen dezelfde updates, die gedurende een korte periode worden geïmplementeerd.
serverloze omgevingsversies
Databricks serverloze berekening voor notebooks en taken bevat een architectuur op basis van Spark Connect, waardoor onafhankelijke engine-upgrades worden ingeschakeld zonder dat dit van invloed is op de toepassing. Om ervoor te zorgen dat toepassingscompatibiliteit wordt gegarandeerd, gebruiken serverloze workloads een versie van de API, ook wel de omgevingsversie of -client genoemd, die compatibel blijft met nieuwere serverversies.
De nieuwste omgevingsversie blijft updates ontvangen totdat er een nieuwe versie wordt uitgebracht. Gebruikers kunnen kiezen uit een van de volgende ondersteunde omgevingsversies:
Opmerkingen bij de release
Deze sectie bevat releaseopmerkingen voor serverloze berekeningen. Releaseopmerkingen zijn ingedeeld op jaar en week van het jaar. Serverloze compute wordt altijd uitgevoerd met behulp van de laatst uitgebrachte versie die hier wordt vermeld.
- hoge geheugeninstelling beschikbaar op serverloze notebooks (openbare preview)
- Versie 16.1
- versie 15.4
- De JDK wordt bijgewerkt van JDK 8 naar JDK 17
- Versie 15.1
- Versie 14.3
Hoge geheugeninstelling beschikbaar op serverloze notebooks (openbare preview)
7 februari 2025
U kunt nu een hogere geheugengrootte configureren voor uw serverloze rekenworkloads. Deze instelling kan worden toegepast op zowel interactieve als geplande notebookworkloads.
Serverloos gebruik met hoog geheugen heeft een hogere DBU-emissiesnelheid dan standaardgeheugen.
Zie Hoge geheugen configureren voor uw serverloze workloadsvoor meer informatie.
Versie 16.1
5 februari 2025
Deze serverloze compute-release komt ongeveer overeen met Databricks Runtime 16.0 en Databricks Runtime 16.1.
Nieuwe functies
Avro-ondersteuning voor recursief schema: U kunt nu de optie
recursiveFieldMaxDepth
gebruiken met de functiefrom_avro
en deavro
gegevensbron. Met deze optie stelt u de maximale diepte in voor schemarecursie op de Avro-gegevensbron. Zie Streaming Avro-gegevens lezen en schrijven.Uitgebreide ondersteuning voor Confluent Schema Registry voor Avro: Serverloze ondersteunt nu avro-schemaverwijzingen met het Confluent-schemaregister. Zie Verifiëren bij een extern Confluent-schemaregister.
Het opnieuw clusteren van tabellen afdwingen met liquide clustering: U kunt nu de syntaxis van de
OPTIMIZE FULL
gebruiken om de herclustering van alle records in een tabel af te dwingen waarvoor liquide clustering is ingeschakeld. Zie dwangherclustering voor alle records.De Delta-API's voor Python ondersteunen nu identiteitskolommen: U kunt nu de Delta-API's voor Python gebruiken om tabellen met identiteitskolommen te maken. Zie Identiteitskolommen gebruiken in Delta Lake.
Dynamische geclusterde tabellen maken tijdens het schrijven van streaming: U kunt nu
clusterBy
gebruiken om liquide clustering in te schakelen bij het maken van nieuwe tabellen met Structured Streaming-schrijfbewerkingen. Zie Liquid Clustering inschakelen.Ondersteuning voor de component OPTIMIZE FULL: Serverloze compute ondersteunt nu de component OPTIMIZE FULL. Met deze component worden alle records in een tabel geoptimaliseerd die gebruikmaakt van liquide clustering, inclusief gegevens die eerder zijn geclusterd.
Ondersteuning voor specificatie van WITH-opties in INSERT en tabelverwijzing: Serverloze berekening ondersteunt nu een specificatie van opties voor tabelverwijzingen en tabelnamen van een
INSERT
-instructie die kan worden gebruikt om het gedrag van gegevensbronnen te beheren.Nieuwe SQL-functies: De volgende SQL-functies zijn nu beschikbaar op serverloze berekeningen:
- try_url_decode is een fouttolerante versie van url_decode.
-
zeroifnull- retourneert 0 als de invoerexpressie voor de functie
zeroifnull()
NULL
is. -
nullifzero- retourneert
NULL
als de invoer 0 is of zijn invoer als de invoer niet 0 is. - dayname(expr) retourneert de drieletterige Engelse acroniem voor de dag van de week voor de opgegeven datum.
- uniform(expr1, expr2 [,seed]) retourneert een willekeurige waarde met onafhankelijke en identiek verdeelde waarden binnen het opgegeven bereik van getallen.
-
randstr(lengte) retourneert een willekeurige tekenreeks van
length
alfanumerieke tekens.
Automatische schemaontwikkeling inschakelen bij het samenvoegen van gegevens in een Delta-tabel: Ondersteuning is toegevoegd voor het
withSchemaEvolution()
lid van deDeltaMergeBuilder
-klasse. GebruikwithSchemaEvolution()
dit om automatische schemaontwikkeling in te schakelen tijdensMERGE
bewerkingen. Bijvoorbeeld:mergeBuilder.whenMatched(...).withSchemaEvolution().execute()}}
.Ondersteuning voor sorteringen in Apache Spark is in openbare preview: U kunt nu taalbewuste, hoofdletterongevoelige en toegangsongevoelige sorteringen toewijzen aan
STRING
kolommen en expressies. Deze sorteringen worden gebruikt in tekenreeksvergelijkingen, sortering, groeperingsbewerkingen en veel tekenreeksfuncties. Zie Collatie.Ondersteuning voor sorteringen in Delta Lake is in openbare preview: U kunt nu sorteringen definiëren voor kolommen bij het maken of wijzigen van een Delta-tabel. Zie Collatieondersteuning voor Delta Lake.
LITE
modus voor vacuüm is beschikbaar in openbare preview: U kunt nuVACUUM table_name LITE
gebruiken om een lichtere vacuümbewerking uit te voeren die gebruikmaakt van metagegevens in het Delta-transactielogboek. Zie Full versus lite mode en VACUUM.Ondersteuning voor het parameteriseren van de
USE CATALOG with IDENTIFIER
-component: De IDENTIFIER-component wordt nu ondersteund voor de USE CATALOG-instructie. Met deze ondersteuning kunt u de huidige catalogus parameteriseren op basis van een tekenreeksvariabele of parametermarkering.COMMENT ON COLUMN ondersteuning voor tabellen en weergaven: De instructie COMMENT ON ondersteunt nu het wijzigen van opmerkingen voor weergave- en tabelkolommen.
benoemde parameter aanroep voor meer functies: De volgende functies ondersteunen benoemde parameter aanroepen:
De parameter
SYNC METADATA
voor de opdracht REPAIR TABLE wordt ondersteund met de Hive-metastore: U kunt nu de parameterSYNC METADATA
gebruiken met de opdrachtREPAIR TABLE
om de metagegevens van een beheerde Hive-metastore-tabel bij te werken. Zie REPAIR TABLE.Verbeterde gegevensintegriteit voor gecomprimeerde Apache Arrow-batches: Om gegevenscorruptie verder te voorkomen, bevat elke
LZ4
gecomprimeerde Apache Arrow-batch nu deLZ4
inhoud en blokcontrolesommen. Zie LZ4 Frameformaatbeschrijving.Ingebouwd Oracle JDBC-stuurprogramma: De Oracle JDBC-driver is nu ingebouwd in serverloze computercapaciteit. Als u een door de klant geüploade JAR van het JDBC-stuurprogramma via
DriverManager
gebruikt, moet u scripts herschrijven om expliciet het aangepaste JAR-bestand te gebruiken. Anders wordt het ingebouwde stuurprogramma gebruikt. Dit stuurprogramma ondersteunt alleen Lakehouse Federation. Voor andere toepassingen moet u uw eigen stuurprogramma opgeven.Gedetailleerdere fouten voor Delta-tabellen die worden geopend met paden: Een nieuwe foutmelding voor Delta-tabellen die worden geopend met behulp van paden, is nu beschikbaar. Alle uitzonderingen worden nu doorgestuurd naar de gebruiker. De uitzondering
DELTA_MISSING_DELTA_TABLE
is nu gereserveerd voor wanneer onderliggende bestanden niet kunnen worden gelezen als een Delta-tabel.
Gedragswijzigingen
Belangrijke wijziging: Het einde van de levensduur voor gehoste RStudio: Met deze release heeft Databricks-gehoste RStudio Server het einde van zijn levensduur bereikt en is niet meer beschikbaar in elke Azure Databricks-werkruimte die gebruikmaakt van serverloze compute. Zie Veroudering van RStudio-servervoor meer informatie en om een lijst van alternatieven te zien voor RStudio Server.
Incompatibele wijziging: het weghalen van ondersteuning voor het veranderen van
byte
,short
,int
enlong
typen naar bredere typen: Om consistent gedrag te waarborgen in Delta- en Iceberg-tabellen mogen de volgende veranderingen in gegevenstype niet langer worden toegepast op tabellen waarvoor de type verbredingsfunctie is ingeschakeld.-
byte
, enshort
int
long
aan .decimal
-
byte
, enshort
int
aandouble
.
-
Juiste parsering van regex-patronen met negatie in geneste tekengroepering: Deze release bevat een wijziging ter ondersteuning van de juiste parsering van regex-patronen met negatie in geneste tekengroepering. Wordt bijvoorbeeld
[^[abc]]
geparseerd als 'elk teken dat niet een van 'abc' is.Daarnaast was het photon-gedrag inconsistent met Spark voor geneste tekenklassen. Regex-patronen met geneste tekenklassen maken geen gebruik meer van Photon en gebruiken in plaats daarvan Spark. Een geneste tekenklasse is een patroon met vierkante haken binnen vierkante haken, zoals
[[a-c][1-3]]
.Verbeteren van dubbele overeenkomstdetectie in Delta Lake
MERGE
:MERGE
houdt nu rekening met voorwaarden die zijn gespecificeerd in deWHEN MATCHED
clausule. Zie Upsert in een Delta Lake-tabel met behulp van een merge.De
addArtifact()
-functionaliteit is nu consistent voor rekentypen: Wanneer uaddArtifact(archive = True)
gebruikt om een afhankelijkheid toe te voegen aan serverloze berekeningen, wordt het archief automatisch uitgepakt. Deze wijziging zorgt ervoor dat hetaddArtifact(archive = True)
gedrag consistent is met berekeningen van één gebruiker, die al automatisch uitpakken van archieven ondersteunt.Het gegevenstype
VARIANT
kan niet meer worden gebruikt met bewerkingen waarvoor vergelijkingen zijn vereist: U kunt de volgende componenten of operators niet gebruiken in query's met eenVARIANT
gegevenstype:DISTINCT
INTERSECT
EXCEPT
UNION
DISTRIBUTE BY
Bovendien kunt u deze DataFrame-functies niet gebruiken:
df.dropDuplicates()
df.repartition()
Deze bewerkingen voeren vergelijkingen uit en vergelijkingen die gebruikmaken van het
VARIANT
gegevenstype produceren niet-gedefinieerde resultaten en worden niet ondersteund in Databricks. Als u hetVARIANT
-type in uw Azure Databricks-workloads of -tabellen gebruikt, raadt Databricks de volgende wijzigingen aan:- Werk queries of expressies bij om expliciet
VARIANT
-waarden te casten naar niet-VARIANT
gegevenstypen. - Als u velden hebt die moeten worden gebruikt met een van de bovenstaande bewerkingen, extraheert u deze velden uit het
VARIANT
gegevenstype en slaat u deze op met niet-VARIANT
gegevenstypen.
Bugfixes
- tijdzone-offsets bevatten nu seconden wanneer ze zijn geserialiseerd naar CSV, JSON en XML: Tijdstempels met tijdzone-offsets die seconden bevatten (gebruikelijk voor tijdstempels van vóór 1900) laten de seconden weg wanneer ze worden geserialiseerd naar CSV, JSON en XML. De standaard tijdstempelformatter is gecorrigeerd en retourneert nu de juiste offsetwaarden voor deze tijdstempels.
Andere wijzigingen
-
hernoemde foutcodes voor de
cloudFiles
Structured Streaming-bron: De volgende foutcodes zijn hernoemd:-
_LEGACY_ERROR_TEMP_DBR_0143
wordt gewijzigd inCF_INCORRECT_STREAM_USAGE
. -
_LEGACY_ERROR_TEMP_DBR_0260
wordt gewijzigd inCF_INCORRECT_BATCH_USAGE
.
-
Versie 15.4
28 oktober 2024
Deze serverloze compute-release komt ongeveer overeen met Databricks Runtime 15.4
Nieuwe functies
-
UTF-8-validatiefuncties: in deze release worden de volgende functies geïntroduceerd voor het valideren van UTF-8-tekenreeksen:
- is_valid_utf8 gecontroleerd of een tekenreeks een geldige UTF-8-tekenreeks is.
- make_valid_utf8 converteert een mogelijk ongeldige UTF-8-tekenreeks naar een geldige UTF-8-tekenreeks met vervangingstekens.
- validate_utf8 genereert een fout als de invoer geen geldige UTF-8-tekenreeks is.
-
try_validate_utf8 retourneert
NULL
als de invoer geen geldige UTF-8-tekenreeks is.
- UniForm Iceberg inschakelen met behulp van ALTER TABLE: U kunt UniForm Iceberg nu inschakelen op bestaande tabellen zonder gegevensbestanden opnieuw te schrijven. Zie Iceberg-lezen inschakelen voor een bestaande tabel.
-
try_url_decode functie: in deze release wordt de functie try_url_decode geïntroduceerd, waarmee een tekenreeks met URL-codering wordt gedecodeerd. Als de tekenreeks niet de juiste indeling heeft, retourneert
NULL
de functie in plaats van een fout op te geven. -
U kunt de optimizer desgewenst laten vertrouwen op niet-afgedwongen beperkingen voor refererende sleutels: Als u de prestaties van query's wilt verbeteren, kunt u nu het
RELY
trefwoord opgeven voorFOREIGN KEY
beperkingen wanneer u een tabel MAAKT of WIJZIGt . -
Geparallelliseerde taakuitvoeringen voor selectief overschrijven: selectief overschrijven met behulp van
replaceWhere
nu uitgevoerde taken waarmee gegevens worden verwijderd en nieuwe gegevens parallel worden ingevoegd, waardoor de queryprestaties en het clustergebruik worden verbeterd. -
Verbeterde prestaties voor wijzigingenfeed met selectieve overschrijven: selectief overschrijven met behulp van
replaceWhere
tabellen met wijzigingenfeed schrijft geen afzonderlijke wijzigingsgegevensbestanden meer voor ingevoegde gegevens. Deze bewerkingen maken gebruik van een verborgen_change_type
kolom die aanwezig is in de onderliggende Parquet-gegevensbestanden om wijzigingen vast te leggen zonder schrijfversterking. -
Verbeterde querylatentie voor de
COPY INTO
opdracht: deze release bevat een wijziging die de querylatentie voor deCOPY INTO
opdracht verbetert. Deze verbetering wordt geïmplementeerd door het laden van de status door de RocksDB-statusopslag asynchroon te maken. Met deze wijziging ziet u een verbetering in de begintijden voor query's met grote statussen, zoals query's met een groot aantal al opgenomen bestanden. -
Ondersteuning voor het verwijderen van de tabelfunctie voor controlebeperkingen: u kunt de
checkConstraints
tabelfunctie nu verwijderen uit een Delta-tabel met behulp vanALTER TABLE table_name DROP FEATURE checkConstraints
. Zie Controlebeperkingen uitschakelen.
Gedragswijzigingen
Wijziging van schemabinding voor weergaven: Wanneer de gegevenstypen in de onderliggende query van een weergave veranderen van de gegevenstypen die worden gebruikt toen de weergave voor het eerst werd gemaakt, genereert Databricks geen fouten meer voor verwijzingen naar de weergave wanneer er geen veilige cast kan worden uitgevoerd.
In plaats daarvan compenseert de weergave waar mogelijk met behulp van reguliere cast-regels. Met deze wijziging kan Databricks tabelschemawijzigingen gemakkelijker tolereren.
Niet-gedocumenteerde
!
syntaxistolerantie voorNOT
buiten booleaanse logica niet toestaan: Databricks tolereert niet langer het gebruik van!
als synoniem voorNOT
buiten booleaanse logica. Deze wijziging vermindert verwarring, komt overeen met de SQL-standaard en maakt SQL draagbaarder. Voorbeeld:CREATE ... IF ! EXISTS
, IS ! Null,! NULL
kolom- of veldeigenschap,! IN
en ! BETWEEN moet worden vervangen door:CREATE ... IF NOT EXISTS
, kolomIS NOT NULL
- of veldeigenschap enNOT NULL
NOT IN
.NOT BETWEEN
De booleaanse voorvoegseloperator
!
(bijvoorbeeld!is_mgr
of!(true AND false)
) wordt niet beïnvloed door deze wijziging.Niet-gedocumenteerde en niet-verwerkte gedeelten van de syntaxis van kolomdefinities in weergaven niet mogelijk maken: Databricks ondersteunt CREATE VIEW met benoemde kolommen en kolomopmerkingen.
De specificatie van kolomtypen,
NOT NULL
beperkingen ofDEFAULT
is getolereerd in de syntaxis zonder effect. Databricks verwijdert deze syntaxistolerantie. Dit vermindert verwarring, komt overeen met de SQL-standaard en maakt toekomstige verbeteringen mogelijk.Consistente foutafhandeling voor Base64-decodering in Spark en Photon: in deze release wordt gewijzigd hoe Photon base64-decoderingsfouten verwerkt zodat deze overeenkomen met de Spark-verwerking van deze fouten. Vóór deze wijzigingen kon het pad voor het genereren van Photon- en Spark-code soms geen parseringsonderingen veroorzaken, terwijl de uitvoering door Spark correct werd geïnterpreteerd
IllegalArgumentException
ofConversionInvalidInputError
. Deze update zorgt ervoor dat Photon consistent dezelfde uitzonderingen genereert als Spark tijdens base64-decoderingsfouten, wat voorspelbare en betrouwbare foutafhandeling biedt.Als u een
CHECK
beperking toevoegt aan een ongeldige kolom, wordt nu de UNRESOLVED_COLUMN geretourneerd. WITH_SUGGESTION foutklasse: Om nuttigere foutberichten te bieden, wordt in Databricks Runtime 15.3 en hoger eenALTER TABLE ADD CONSTRAINT
instructie met eenCHECK
beperking die verwijst naar een ongeldige kolomnaam, de UNRESOLVED_COLUMN geretourneerd. WITH_SUGGESTION foutklasse. Eerder werd er eenINTERNAL_ERROR
geretourneerd.
De JDK wordt bijgewerkt van JDK 8 naar JDK 17
15 augustus 2024
Serverloze rekenkracht voor notebooks en werkstromen is gemigreerd van Java Development Kit (JDK) 8 naar JDK 17 aan de serverzijde. Deze upgrade omvat de volgende gedragswijzigingen:
Corrigeer het parseren van regex-patronen met negatie in geneste tekengroepering: Met deze upgrade ondersteunt Azure Databricks nu de juiste parsering van regex-patronen met negatie in geneste tekengroepering. Wordt bijvoorbeeld
[^[abc]]
geparseerd als 'elk teken dat niet een van 'abc' is.Daarnaast was het photon-gedrag inconsistent met Spark voor geneste tekenklassen. Regex-patronen met geneste tekenklassen maken geen gebruik meer van Photon en gebruiken in plaats daarvan Spark. Een geneste tekenklasse is een patroon met vierkante haken binnen vierkante haken, zoals
[[a-c][1-3]]
.
Versie 15.1
23 juli 2024
Deze serverloze rekenkrachtrelease komt ongeveer overeen met Databricks Runtime 15.1
Nieuwe functies
*
lijst.
Bijvoorbeeld: SELECT * FROM VALUES(1, 2) AS T(a1, a2) WHERE 1 IN(T.*)
.
Wijzigingen
Verbeterd foutherstel voor JSON-parsering: de JSON-parser die wordt gebruikt voor from_json()
expressies van JSON-pad, herstelt nu sneller van onjuiste syntaxis, wat resulteert in minder gegevensverlies.
Wanneer u een ongeldige JSON-syntaxis in een structveld, een matrixwaarde, een kaartsleutel of een toewijzingswaarde tegenkomt, wordt de JSON-parser nu alleen geretourneerd NULL
voor het onleesbare veld, de sleutel of het element. Volgende velden, sleutels of elementen worden correct geparseerd. Vóór deze wijziging heeft de JSON-parser de matrix, de struct of de kaart verlaten en geretourneerd NULL
voor de resterende inhoud.
Versie 14.3
15 april 2024
Dit is de eerste serverloze rekenversie. Deze versie komt ongeveer overeen met Databricks Runtime 14.3 met enkele wijzigingen die ondersteuning voor sommige niet-serverloze en verouderde functies verwijderen.
Ondersteunde Spark-configuratieparameters
Om de configuratie van Spark op serverloze berekeningen te automatiseren, heeft Azure Databricks de ondersteuning verwijderd voor het handmatig instellen van de meeste Spark-configuraties. U kunt alleen de volgende Spark-configuratieparameters handmatig instellen:
-
spark.sql.legacy.timeParserPolicy
(standaardwaarde isCORRECTED
) -
spark.sql.session.timeZone
(standaardwaarde isEtc/UTC
) -
spark.sql.shuffle.partitions
(standaardwaarde isauto
) -
spark.sql.ansi.enabled
(standaardwaarde istrue
)
De taak wordt uitgevoerd op serverloze berekeningen mislukt als u een Spark-configuratie instelt die niet in deze lijst staat.
Zie Spark-configuratie-eigenschappen instellen in Azure Databricks voor meer informatie over het configureren van Spark-eigenschappen.
input_file functies zijn afgeschaft
De functies input_file_name(), input_file_block_length()en input_file_block_start() zijn afgeschaft. Het gebruik van deze functies wordt sterk afgeraden.
Gebruik in plaats daarvan de kolom met bestandsmetagegevens om metagegevens van bestanden op te halen.
Gedragswijzigingen
Serverloze compute-versie 2024.15 bevat de volgende gedragswijzigingen:
-
unhex(hexStr) bug fix: Wanneer u de
unhex(hexStr)
functie gebruikt, wordt hexStr altijd opgevuld naar een hele byte. Voorheen negeerde de onhexe functie de eerste halve byte. Bijvoorbeeld:unhex('ABC')
produceertx'0ABC'
nu in plaats vanx'BC'
. - Automatisch gegenereerde kolomaliassen zijn nu stabiel: wanneer het resultaat van een expressie wordt verwezen zonder een door de gebruiker opgegeven kolomalias, is deze automatisch gegenereerde alias nu stabiel. Het nieuwe algoritme kan leiden tot een wijziging van de eerder automatisch gegenereerde namen die worden gebruikt in functies zoals gerealiseerde weergaven.
-
Tabelscans met
CHAR
typevelden worden nu altijd opgevuld: Delta-tabellen, bepaalde JDBC-tabellen en externe gegevensbronnen slaan CHAR-gegevens op in niet-opgevulde vorm. Bij het lezen worden de gegevens nu in Azure Databricks opgeslagen met spaties naar de gedeclareerde lengte om de juiste semantiek te garanderen. -
Casts from BIGINT/DECIMAL to TIMESTAMP throw an exception for overflowed values: Azure Databricks allows casting from BIGINT and DECIMAL to TIMESTAMP by treating the value as the number of seconds from the Unix epoch. Voorheen retourneerde Azure Databricks overloopwaarden, maar genereert nu een uitzondering in gevallen van overloop. Gebruik
try_cast
dit om NULL te retourneren in plaats van een uitzondering. -
PySpark UDF-uitvoering is verbeterd zodat deze overeenkomt met het exacte gedrag van UDF-uitvoering op rekenkracht van één gebruiker: De volgende wijzigingen zijn aangebracht:
- UDF's met een tekenreeks retourtype converteren niet langer impliciet niet-tekenreekswaarden naar tekenreeksen. Voorheen zouden UDF's met een retourtype van
str
een wrapper wordenstr(..)
toegepast op het resultaat, ongeacht het werkelijke gegevenstype van de geretourneerde waarde. - UDF's met
timestamp
retourtypen passen een tijdzoneconversie niet meer impliciet toe op tijdstempels.
- UDF's met een tekenreeks retourtype converteren niet langer impliciet niet-tekenreekswaarden naar tekenreeksen. Voorheen zouden UDF's met een retourtype van