Itgenpse009: Een select ... into-instructie in PSQL moet precies een rij ophalen, maar er zijn meerdere rijen opgehaald

Het blijkt dat er sprake is van een punt dat ergens op grensvlak zweeft tussen “documentation bug”, “bug” en “feature”. Er kunnen meerdere rijen komen uit de for json auto, namelijk één per 1.000 rijen en dan nog afhankelijk van aantal randvoorwaarden. Dit is niet beschreven en niet instelbaar.

Nieuw: for json output per <GETAL> rows

Een aanpassing wordt verwerkt in de Invantive SQL-grammatica bij de for json clause. Voortaan kan er naast de root node, wel/niet opnemen null waarden en wel/niet opnemen JSON array-buitenlaag ook opgegeven worden hoeveel rijen per regel terug moeten komen via:

, output per <GETAL> rows

Indien niet opgegeven, dan wordt de eerder gebruikte standaardwaarde van 1.000 rijen gebruikt.

De eerste regel zal - tenzij onderdrukt - het array-karakter [ bevatten, de laatste regel eindigt met ].

Een voorbeeld van een Invantive SQL-query die de getallen tot/met 100 per drie gegroepeerd teruggeeft is:

select rge.value
from   range@datadictionary(100) rge
for    json auto
,      output per 3 rows

Waarom losse rijen met JSON?

Het gebruik van de for json-clause in Invantive SQL heeft een grote vlucht genomen. Inmiddels worden soms honderden gigabytes aan data per dag verwerkt hiermee. Echter, deze verwerking is sterk batchmatig. Dit leidt tot een grote belasting van de apparatuur. Door meer mogelijkheden te bieden voor het opknippen van de JSON-berichten wordt het eenvoudiger om tussenresultaten alvast op te sturen naar de ontvanger. Hierdoor daalt het maximale geheugenbeslag en kunnen ook resultaten van meer dan 2 GB verwerkt worden.

In de toekomst is het streven om ook teksten te kunnen toevoegen aan de HTTP stream van Invantive Cloud als het totale volume meer dan 2 GB is.

Toepassing: alles in één rij

Om alle data in één rij te plaatsen gebruik je een bijzonder hoge waarde voor het getal.