1 Reply Latest reply on Jul 5, 2019 1:09 PM by rareddy

    How does Teiid consume paged OData service(s)

    rflesken

      Hi all,

       

      How would Teiid handle the consume of a paged OData service?
      We experience a case where a consuming odata service is running out of memory because the response holds too many objects.

      We want to add paging to this odata service, so that the responses become smaller.

       

      The service is being consumed by JBoss Datavirtualization with a virtual procedure, so i was wondering how the paging will affect the results of this procedure.

      Will Teiid use skiptoken to retrieve all data and expose it to a VDB? Or do we need to add logic ourself ?

       

      Example proc:

       

      BEGIN 
        DECLARE string variables.QP = querystring('Order'); 
        SELECT a."d:ID"                                                                                     AS "d:ID",
               a."d:TypeAanvraag"                                                                           AS "d:TypeAanvraag",
               a."d:SoortAanvraag"                                                                          AS "d:SoortAanvraag",
               a."d:Opmerkingen"                                                                            AS "d:Opmerkingen",
               a."d:VervolgactiePand"                                                                       AS "d:VervolgactiePand",
               a."d:IngangsDatumContractNieuweHuurderEigenaar"                                              AS "d:IngangsDatumContractNieuweHuurderEigenaar",
               a."d:SloopDatum"                                                                             AS "d:SloopDatum",
               a."d:SoortGebruiker"                                                                         AS "d:SoortGebruiker",
               a."d:IsNieuwIndustrieterrein"                                                                AS "d:IsNieuwIndustrieterrein",
               a."d:HeeftVerklaringSchoneGrond"                                                             AS "d:HeeftVerklaringSchoneGrond",
               a."d:HeeftBouwaansluiting"                                                                   AS "d:HeeftBouwaansluiting",
               a."d:IsGelijktijdigWaterbedrijf"                                                             AS "d:IsGelijktijdigWaterbedrijf",
               a."d:Status"                                                                                 AS "d:Status",
               a."d:IsFacturatieEqualContact"                                                               AS "d:IsFacturatieEqualContact",
               a."d:OfferteDatum"                                                                           AS "d:OfferteDatum",
               a."d:OfferteVervaldatum"                                                                     AS "d:OfferteVervaldatum",
               a."d:Kenmerk"                                                                                AS "d:Kenmerk",
               a."d:Klantnummer"                                                                            AS "d:Klantnummer",
               a."d:LevertijdInWeken"                                                                       AS "d:LevertijdInWeken",
               a."d:Aanvraagdatum"                                                                          AS "d:Aanvraagdatum",
               a."d:IsLocatieBinnenHekwerk"                                                                 AS "d:IsLocatieBinnenHekwerk",
               a."d:IsLocatieHekwerkUitzondering"                                                           AS "d:IsLocatieHekwerkUitzondering",
               a."d:IsAanvraagEigenBedrijf"                                                                 AS "d:IsAanvraagEigenBedrijf",
               a."d:Omschrijving"                                                                           AS "d:Omschrijving",
               a."d:IsAkkoordInBedrijfname"                                                                 AS "d:IsAkkoordInBedrijfname",
               a."d:GewensteDatumWerkzaamheden"                                                             AS "d:GewensteDatumWerkzaamheden",
               a."d:OrderComponent_Order_Electricity"                                                       AS "d:OrderComponent_Order_Electricity",
               a."d:OrderComponent_Order_Gas"                                                               AS "d:OrderComponent_Order_Gas",
               a."d:Order_Klant"                                                                            AS "d:Order_Klant",
               a."d:Order_Klant_Facturatie"                                                                 AS "d:Order_Klant_Facturatie",
               a."d:Order_Adres_Aansluitadres"                                                              AS "d:Order_Adres_Aansluitadres",
               a."d:Order_Klant_Ontzorgpartij"                                                              AS "d:Order_Klant_Ontzorgpartij",
               a."d:Order_Location"                                                                         AS "d:Order_Location",
               a."d:DatumOfferteOndertekend"                                                                AS "d:DatumOfferteOndertekend",
               a."d:DatumATOOndertekend"                                                                    AS "d:DatumATOOndertekend"
        FROM   (exec a_src_sgv_ows.invokehttp(action => 'GET', endpoint => variables.qp, stream => 'TRUE')) AS f,
               xmltable(xmlnamespaces(default 'http://www.w3.org/2005/Atom', 'http://schemas.microsoft.com/ado/2007/08/dataservices' AS d, 'http://schemas.microsoft.com/ado/2007/08/dataservices/metadata' AS m), '/feed/entry/content/m:properties' passing xmlparse(document f.result) columns "d:ID" string path 'd:ID/text()', "d:TypeAanvraag" string path 'd:TypeAanvraag/text()', "d:SoortAanvraag" string path 'd:SoortAanvraag/text()', "d:Opmerkingen" string path 'd:Opmerkingen/text()', "d:VervolgactiePand" string path 'd:VervolgactiePand/text()', "d:IngangsDatumContractNieuweHuurderEigenaar" string path 'd:IngangsDatumContractNieuweHuurderEigenaar/text()', "d:SloopDatum" string path 'd:SloopDatum/text()', "d:SoortGebruiker" string path 'd:SoortGebruiker/text()', "d:IsNieuwIndustrieterrein" string path 'd:IsNieuwIndustrieterrein/text()', "d:HeeftVerklaringSchoneGrond" string path 'd:HeeftVerklaringSchoneGrond/text()', "d:HeeftBouwaansluiting" string path 'd:HeeftBouwaansluiting/text()', "d:IsGelijktijdigWaterbedrijf" string path 'd:IsGelijktijdigWaterbedrijf/text()', "d:Status" string path 'd:Status/text()', "d:IsFacturatieEqualContact" string path 'd:IsFacturatieEqualContact/text()', "d:OfferteDatum" string path 'd:OfferteDatum/text()', "d:OfferteVervaldatum" string path 'd:OfferteVervaldatum/text()', "d:Kenmerk" string path 'd:Kenmerk/text()', "d:Klantnummer" string path 'd:Klantnummer/text()', "d:LevertijdInWeken" string path 'd:LevertijdInWeken/text()', "d:Aanvraagdatum" string path 'd:Aanvraagdatum/text()', "d:IsLocatieBinnenHekwerk" string path 'd:IsLocatieBinnenHekwerk/text()', "d:IsLocatieHekwerkUitzondering" string path 'd:IsLocatieHekwerkUitzondering/text()', "d:IsAanvraagEigenBedrijf" string path 'd:IsAanvraagEigenBedrijf/text()', "d:Omschrijving" string path 'd:Omschrijving/text()', "d:IsAkkoordInBedrijfname" string path 'd:IsAkkoordInBedrijfname/text()', "d:GewensteDatumWerkzaamheden" string path 'd:GewensteDatumWerkzaamheden/text()', "d:OrderComponent_Order_Electricity" string path 'd:OrderComponent_Order_Electricity/text()', "d:OrderComponent_Order_Gas" string path 'd:OrderComponent_Order_Gas/text()', "d:Order_Klant" string path 'd:Order_Klant/text()', "d:Order_Klant_Facturatie" string path 'd:Order_Klant_Facturatie/text()', "d:Order_Adres_Aansluitadres" string path 'd:Order_Adres_Aansluitadres/text()', "d:Order_Klant_Ontzorgpartij" string path 'd:Order_Klant_Ontzorgpartij/text()', "d:Order_Location" string path 'd:Order_Location/text()', "d:DatumOfferteOndertekend" string path 'd:DatumOfferteOndertekend/text()', "d:DatumATOOndertekend" string path 'd:DatumATOOndertekend/text()') AS a;
      
      END

       

      Ruud