Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sp9dQ-00H22y-Au for pgsql-general@arkaria.postgresql.org; Fri, 13 Sep 2024 16:59:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1sp9dP-007TiV-7i for pgsql-general@arkaria.postgresql.org; Fri, 13 Sep 2024 16:59:03 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sp9dO-007TiM-K5 for pgsql-general@lists.postgresql.org; Fri, 13 Sep 2024 16:59:02 +0000 Received: from mail-oo1-xc2f.google.com ([2607:f8b0:4864:20::c2f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sp9dK-000zkm-Ek for pgsql-general@lists.postgresql.org; Fri, 13 Sep 2024 16:59:01 +0000 Received: by mail-oo1-xc2f.google.com with SMTP id 006d021491bc7-5e1b35030aeso1274497eaf.3 for ; Fri, 13 Sep 2024 09:58:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1726246738; x=1726851538; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=AhtLz3/w7QOPWPJoS97Pi2EasauNZS35rC9ss09F9Fw=; b=F/k/1jeOrRR8RHJUje17DLxBdHvFTQINyQkHp13FoSQ3OK8XE6Ip9yipAAapEQ0sp1 +/+x9T0NzjapMnuCuILnUskk/WnSaJxOFlDg4rnS+zPSJ5LTPBJjJJAkBdGqLeB4m1mX 98NfiAFrkal+MgITjZr2oc7oRmkgkFrCaflj5MmWIIHuabNRvMHH5Oo29t/tO77MRs+A 1VLAIqutxELPgxjm53ZttkpUor9qxXGBbFu8566hy/5ikMxopi7c0Ox3u0tMGmp7D65F wFN/vI6XygR+FqBjltNPf80i4NY7SQXlybnLDo77DgpBN5FqSdKPpgIU0YdZmn4W7Hlr eZQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1726246738; x=1726851538; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=AhtLz3/w7QOPWPJoS97Pi2EasauNZS35rC9ss09F9Fw=; b=gvTCXC6uS5CZgYdXxOBH3p24pCawLnrUSE1xS1VeCmeF8GCRv6KJS/7tfWhod+4Ozq Noqohh9VDx4vWTJziMcfJt4/qTpFtIggOk7mXnPNq0v0oYMHcxSfwCoTtR2MPwuXIZfy 75rgVnArHWE6d3dZHT+i3wJrOMcDl615CZppmojl/DuvdP3p/qtHLFL3P3/EoZEU8f47 d47ZZgiqnSttAVgVxzOjffjADfJ8CVdcLvtfptsBTAMQ86m3FYXUJyVRJutBTx1oXLqs u7gK+VSck8rT3EGXt6Iei+KN4g0fRNB8aWJwrYkEapZsbDrxRafxbUUzkURWXLbQl5qK uXZQ== X-Gm-Message-State: AOJu0YwnzdUrxPXkl5gix0+w6BaQSVP9D0fsOvv2Y29XIom+2u2bea8j ou5a7rISF7nKdLIIOmdgH9ZoptNremqqOCXrKyx5iTMs3DYJTAQ2EtcxR+32unKpfrVMTzkYNo9 tDn1Za7dZtHV077D0w3SSFMb0+jI= X-Google-Smtp-Source: AGHT+IEbc1V4q98/T0EGv/7BvdZf9KPImicbeoZmc1MwJM2o9nWNjyKfFWQPsqAPxXzeN8ji1Aax5ydjo2U4nt3Uznk= X-Received: by 2002:a05:6870:a10b:b0:261:1600:b1eb with SMTP id 586e51a60fabf-27c3f64a491mr4824012fac.31.1726246735003; Fri, 13 Sep 2024 09:58:55 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: David Mullineux Date: Fri, 13 Sep 2024 17:58:43 +0100 Message-ID: Subject: Re: Will hundred of thousands of this type of query cause Parsing issue To: "Wong, Kam Fook (TR Technology)" Cc: pgsql-general Content-Type: multipart/alternative; boundary="0000000000006f8cc6062203237f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000006f8cc6062203237f Content-Type: text/plain; charset="UTF-8" I would usually try to avoid such long IN causes. Why not try this ...... Create a temp table of 1 column. Bulk insert all your IDs into that table. Then change your query to join to the temp table? This also has the advantage of working for 1000s of values. On Fri, 13 Sept 2024, 16:35 Wong, Kam Fook (TR Technology), < kamfook.wong@thomsonreuters.com> wrote: > Follow Postgres expert, > > We have a flavor of this type of query with long in-list/bind variables > (see below). We notice that some of the bind variables come in as 0 which > causes the optimizer to choose to full scan two of the following 3 tables. > One thought to fix a full table scan is to chop off the not-needed bind > variables (proven to work after some tests). But my other worry is will > cause parsing issues because the app will be executing > 100k/sec with this > type of query. > > I am an Oracle DBA, and this change for sure will generate a different > query id. Which in turn generates tons of extra parsing to the DB because > all soft and hard parsing occurs at the DB level. But my understanding for > Postgres is parsing occurs at the client jdbc level. Am I understanding > this correctly? > > > In summary/my concern: > > 1) Where does query parsing occur? > 2) Will this cause extra parsing to the posgress DB? Any pg system table > to measure parsing? > > > > SELECT abc, efg from DOCLOC a, COLLECTION b WHERE a.colum1 IN ($1, $2, > $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, > $19, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $30, $31, $32, $33, > $34, $35, $36, $37, $38, $39, $40, $41, $42, $43, $44, $45, $46, $47, $48, > $49, $50, $51, $52, $53, $54, $55, $56, $57, $58, $59, $60, $61, $62, $63, > $64, $65, $66, $67, $68, $69, $70, $71, $72, $73, $74, $75, $76, $77, $78, > $79, $80, $81, $82, $83, $84, $85, $86, $87, $88, $89, $90, $91, $92, $93, > $94, $95, $96, $97, $98, $99, $100, $101, $102, $103, $104, $105, $106, > $107, $108, $109, $110, $111, $112, $113, $114, $115, $116, $117, $118, > $119, $120, $121, $122, $123, $124, $125, $126, $127, $128, $129, $130, > $131, $132, $133, $134, $135, $136, $137, $138, $139, $140, $141, $142, > $143, $144, $145, $146, $147, $148, $149, $150, $151, $152, $153, $154, > $155, $156, $157, $158, $159, $160, $161, $162, $163, $164, $165, $166, > $167, $168, $169, $170, $171, $172, $173, $174, $175, $176, $177, $178, > $179, $180, $181, $182, $183, $184, $185, $186, $187, $188, $189, $190, > $191, $192, $193, $194, $195, $196, $197, $198, $199, $200, $201, $202, > $203, $204, $205, $206, $207, $208, $209, $210, $211, $212, $213, $214, > $215, $216, $217, $218, $219, $220, $221, $222, $223, $224, $225, $226, > $227, $228, $229, $230, $231, $232, $233, $234, $235, $236, $237, $238, > $239, $240, $241, $242, $243, $244, $245, $246, $247, $248, $249, $250, > $251, $252, $253, $254, $255, $256, $257, $258, $259, $260, $261, $262, > $263, $264, $265, $266, $267, $268, $269, $270, $271, $272, $273, $274, > $275, $276, $277, $278, $279, $280, $281, $282, $283, $284, $285, $286, > $287, $288, $289, $290, $291, $292, $293, $294, $295, $296, $297, $298, > $299, $300, $301, $302, $303, $304, $305, $306, $307, $308, $309, $310, > $311, $312, $313, $314, $315, $316, $317, $318, $319, $320, $321, $322, > $323, $324, $325, $326, $327, $328, $329, $330, $331, $332, $333, $334, > $335, $336, $337, $338, $339, $340, $341, $342, $343, $344, $345, $346, > $347, $348, $349, $350, $351, $352, $353, $354, $355, $356, $357, $358, > $359, $360, $361, $362, $363, $364, $365, $366, $367, $368, $369, $370, > $371, $372, $373, $374, $375, $376, $377, $378, $379, $380, $381, $382, > $383, $384, $385, $386, $387, $388, $389, $390, $391, $392, $393, $394, > $395, $396, $397, $398, $399, $400, $401, $402, $403, $404, $405, $406, > $407, $408, $409, $410, $411, $412, $413, $414, $415, $416, $417, $418, > $419, $420, $421, $422, $423, $424, $425, $426, $427, $428, $429, $430, > $431, $432, $433, $434, $435, $436, $437, $438, $439, $440, $441, $442, > $443, $444, $445, $446, $447, $448, $449, $450, $451, $452, $453, $454, > $455, $456, $457, $458, $459, $460, $461, $462, $463, $464, $465, $466, > $467, $468, $469, $470, $471, $472, $473, $474, $475, $476, $477, $478, > $479, $480, $481, $482, $483, $484, $485, $486, $487, $488, $489, $490, > $491, $492, $493, $494, $495, $496, $497, $498, $499, $500, $501, $502, > $503, $504, $505, $506, $507, $508, $509, $510, $511, $512, $513, $514, > $515, $516, $517, $518, $519, $520, $521, $522, $523, $524, $525, $526, > $527, $528, $529, $530, $531, $532, $533, $534, $535, $536, $537, $538, > $539, $540, $541, $542, $543, $544, $545, $546, $547, $548, $549, $550, > $551, $552, $553, $554, $555, $556, $557, $558, $559, $560, $561, $562, > $563, $564, $565, $566, $567, $568, $569, $570, $571, $572, $573, $574, > $575, $576, $577, $578, $579, $580, $581, $582, $583, $584, $585, $586, > $587, $588, $589, $590, $591, $592, $593, $594, $595, $596, $597, $598, > $599, $600, $601, $602, $603, $604, $605, $606, $607, $608, $609, $610, > $611, $612, $613, $614, $615, $616, $617, $618, $619, $620, $621, $622, > $623, $624, $625, $626, $627, $628, $629, $630, $631, $632, $633, $634, > $635, $636, $637, $638, $639, $640, $641, $642, $643, $644, $645, $646, > $647, $648, $649, $650, $651, $652, $653, $654, $655, $656, $657, $658, > $659, $660, $661, $662, $663, $664, $665, $666, $667, $668, $669, $670, > $671, $672, $673, $674, $675, $676, $677, $678, $679, $680, $681, $682, > $683, $684, $685, $686, $687, $688, $689, $690, $691, $692, $693, $694, > $695, $696, $697, $698, $699, $700, $701, $702, $703, $704, $705, $706, > $707, $708, $709, $710, $711, $712, $713, $714, $715, $716, $717, $718, > $719, $720, $721, $722, $723, $724, $725, $726, $727, $728, $729, $730, > $731, $732, $733, $734, $735, $736, $737, $738, $739, $740, $741, $742, > $743, $744, $745, $746, $747, $748, $749, $750, $751, $752, $753, $754, > $755, $756, $757, $758, $759, $760, $761, $762, $763, $764, $765, $766, > $767, $768, $769, $770, $771, $772, $773, $774, $775, $776, $777, $778, > $779, $780, $781, $782, $783, $784, $785, $786, $787, $788, $789, $790, > $791, $792, $793, $794, $795, $796, $797, $798, $799, $800, $801, $802, > $803, $804, $805, $806, $807, $808, $809, $810, $811, $812, $813, $814, > $815, $816, $817, $818, $819, $820, $821, $822, $823, $824, $825, $826, > $827, $828, $829, $830, $831, $832, $833, $834, $835, $836, $837, $838, > $839, $840, $841, $842, $843, $844, $845, $846, $847, $848, $849, $850, > $851, $852, $853, $854, $855, $856, $857, $858, $859, $860, $861, $862, > $863, $864, $865, $866, $867, $868, $869, $870, $871, $872, $873, $874, > $875, $876, $877, $878, $879, $880, $881, $882, $883, $884, $885, $886, > $887, $888, $889, $890, $891, $892, $893, $894, $895, $896, $897, $898, > $899, $900, $901, $902, $903, $904, $905, $906, $907, $908, $909, $910, > $911, $912, $913, $914, $915, $916, $917, $918, $919, $920, $921, $922, > $923, $924, $925, $926, $927, $928, $929, $930, $931, $932, $933, $934, > $935, $936, $937, $938, $939, $940, $941, $942, $943, $944, $945, $946, > $947, $948, $949, $950, $951, $952, $953, $954, $955, $956, $957, $958, > $959, $960, $961, $962, $963, $964, $965, $966, $967, $968, $969, $970, > $971, $972, $973, $974, $975, $976, $977, $978, $979, $980, $981, $982, > $983, $984, $985, $986, $987, $988, $989, $990, $991, $992, $993, $994, > $995, $996, $997, $998, $999, $1000) AND > a.COLLECTION_NAME=b.DOCLOC.COLLECTION_NAME AND a.DOCLOC.STAGE_ID=(SELECT > MAX (STAGE_ID) > > FROM COLLECTION_PIT > > WHERE COLLECTION_PIT.COLLECTION_NAME=a.COLLECTION_NAME > > AND COLLECTION_PIT.PIT_ID<=$1001 AND COLLECTION_PIT.STAGE_CODE=$1002) > > This e-mail is for the sole use of the intended recipient and contains > information that may be privileged and/or confidential. If you are not an > intended recipient, please notify the sender by return e-mail and delete > this e-mail and any attachments. Certain required legal entity disclosures > can be accessed on our website: > https://www.thomsonreuters.com/en/resources/disclosures.html > --0000000000006f8cc6062203237f Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
I would usually try to avoid such long IN causes. Wh= y not try this ...... Create a temp table of 1 column. Bulk insert all your= IDs into that table. Then change your query to join to the temp table?=C2= =A0 This also has the advantage of working for 1000s of values.

On Fri, 13 Sep= t 2024, 16:35 Wong, Kam Fook (TR Technology), <kamfook.wong@thomsonreuters.com> wrote:

Follow Postgres exp= ert,

We have a flavor of this type of query with long in-list/bind variables (se= e below).=C2=A0 We notice that some of the bind variables come in as 0 whic= h causes the optimizer to choose to full scan two of the following 3 tables= .=C2=A0 One thought to fix a full table scan is to chop off the not-needed bind variables (proven to work after some te= sts).=C2=A0 But my other worry is will cause parsing issues because the app= will be executing > 100k/sec with this type of query.

I am an Oracle DBA, and this change for sure will generate a different quer= y id.=C2=A0 Which in turn generates tons of extra parsing to the DB because= all soft and hard parsing occurs at the DB level.=C2=A0 But my understandi= ng for Postgres is parsing occurs at the client jdbc level.=C2=A0 Am I understanding this correctly?=C2=A0 <= /span>


In summary/my concern:

1) Where does query parsing occur?
2) Will this cause extra parsing to the posgress DB?=C2=A0 Any pg system ta= ble to measure parsing?=C2=A0

=C2=A0

SELECT=C2=A0 abc, ef= g from DOCLOC a, COLLECTION b =C2=A0WHERE=C2=A0 a.colum1 IN ($1, $2, $3, $4= , $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20= , $21, $22, $23, $24, $25, $26, $27, $28, $29, $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $40, $41, $42, $43, $44, $45,= $46, $47, $48, $49, $50, $51, $52, $53, $54, $55, $56, $57, $58, $59, $60,= $61, $62, $63, $64, $65, $66, $67, $68, $69, $70, $71, $72, $73, $74, $75,= $76, $77, $78, $79, $80, $81, $82, $83, $84, $85, $86, $87, $88, $89, $90, $91, $92, $93, $94, $95, $96, $97,= $98, $99, $100, $101, $102, $103, $104, $105, $106, $107, $108, $109, $110= , $111, $112, $113, $114, $115, $116, $117, $118, $119, $120, $121, $122, $= 123, $124, $125, $126, $127, $128, $129, $130, $131, $132, $133, $134, $135, $136, $137, $138, $139, $140, $1= 41, $142, $143, $144, $145, $146, $147, $148, $149, $150, $151, $152, $153,= $154, $155, $156, $157, $158, $159, $160, $161, $162, $163, $164, $165, $1= 66, $167, $168, $169, $170, $171, $172, $173, $174, $175, $176, $177, $178, $179, $180, $181, $182, $183, $1= 84, $185, $186, $187, $188, $189, $190, $191, $192, $193, $194, $195, $196,= $197, $198, $199, $200, $201, $202, $203, $204, $205, $206, $207, $208, $2= 09, $210, $211, $212, $213, $214, $215, $216, $217, $218, $219, $220, $221, $222, $223, $224, $225, $226, $2= 27, $228, $229, $230, $231, $232, $233, $234, $235, $236, $237, $238, $239,= $240, $241, $242, $243, $244, $245, $246, $247, $248, $249, $250, $251, $2= 52, $253, $254, $255, $256, $257, $258, $259, $260, $261, $262, $263, $264, $265, $266, $267, $268, $269, $2= 70, $271, $272, $273, $274, $275, $276, $277, $278, $279, $280, $281, $282,= $283, $284, $285, $286, $287, $288, $289, $290, $291, $292, $293, $294, $2= 95, $296, $297, $298, $299, $300, $301, $302, $303, $304, $305, $306, $307, $308, $309, $310, $311, $312, $3= 13, $314, $315, $316, $317, $318, $319, $320, $321, $322, $323, $324, $325,= $326, $327, $328, $329, $330, $331, $332, $333, $334, $335, $336, $337, $3= 38, $339, $340, $341, $342, $343, $344, $345, $346, $347, $348, $349, $350, $351, $352, $353, $354, $355, $3= 56, $357, $358, $359, $360, $361, $362, $363, $364, $365, $366, $367, $368,= $369, $370, $371, $372, $373, $374, $375, $376, $377, $378, $379, $380, $3= 81, $382, $383, $384, $385, $386, $387, $388, $389, $390, $391, $392, $393, $394, $395, $396, $397, $398, $3= 99, $400, $401, $402, $403, $404, $405, $406, $407, $408, $409, $410, $411,= $412, $413, $414, $415, $416, $417, $418, $419, $420, $421, $422, $423, $4= 24, $425, $426, $427, $428, $429, $430, $431, $432, $433, $434, $435, $436, $437, $438, $439, $440, $441, $4= 42, $443, $444, $445, $446, $447, $448, $449, $450, $451, $452, $453, $454,= $455, $456, $457, $458, $459, $460, $461, $462, $463, $464, $465, $466, $4= 67, $468, $469, $470, $471, $472, $473, $474, $475, $476, $477, $478, $479, $480, $481, $482, $483, $484, $4= 85, $486, $487, $488, $489, $490, $491, $492, $493, $494, $495, $496, $497,= $498, $499, $500, $501, $502, $503, $504, $505, $506, $507, $508, $509, $5= 10, $511, $512, $513, $514, $515, $516, $517, $518, $519, $520, $521, $522, $523, $524, $525, $526, $527, $5= 28, $529, $530, $531, $532, $533, $534, $535, $536, $537, $538, $539, $540,= $541, $542, $543, $544, $545, $546, $547, $548, $549, $550, $551, $552, $5= 53, $554, $555, $556, $557, $558, $559, $560, $561, $562, $563, $564, $565, $566, $567, $568, $569, $570, $5= 71, $572, $573, $574, $575, $576, $577, $578, $579, $580, $581, $582, $583,= $584, $585, $586, $587, $588, $589, $590, $591, $592, $593, $594, $595, $5= 96, $597, $598, $599, $600, $601, $602, $603, $604, $605, $606, $607, $608, $609, $610, $611, $612, $613, $6= 14, $615, $616, $617, $618, $619, $620, $621, $622, $623, $624, $625, $626,= $627, $628, $629, $630, $631, $632, $633, $634, $635, $636, $637, $638, $6= 39, $640, $641, $642, $643, $644, $645, $646, $647, $648, $649, $650, $651, $652, $653, $654, $655, $656, $6= 57, $658, $659, $660, $661, $662, $663, $664, $665, $666, $667, $668, $669,= $670, $671, $672, $673, $674, $675, $676, $677, $678, $679, $680, $681, $6= 82, $683, $684, $685, $686, $687, $688, $689, $690, $691, $692, $693, $694, $695, $696, $697, $698, $699, $7= 00, $701, $702, $703, $704, $705, $706, $707, $708, $709, $710, $711, $712,= $713, $714, $715, $716, $717, $718, $719, $720, $721, $722, $723, $724, $7= 25, $726, $727, $728, $729, $730, $731, $732, $733, $734, $735, $736, $737, $738, $739, $740, $741, $742, $7= 43, $744, $745, $746, $747, $748, $749, $750, $751, $752, $753, $754, $755,= $756, $757, $758, $759, $760, $761, $762, $763, $764, $765, $766, $767, $7= 68, $769, $770, $771, $772, $773, $774, $775, $776, $777, $778, $779, $780, $781, $782, $783, $784, $785, $7= 86, $787, $788, $789, $790, $791, $792, $793, $794, $795, $796, $797, $798,= $799, $800, $801, $802, $803, $804, $805, $806, $807, $808, $809, $810, $8= 11, $812, $813, $814, $815, $816, $817, $818, $819, $820, $821, $822, $823, $824, $825, $826, $827, $828, $8= 29, $830, $831, $832, $833, $834, $835, $836, $837, $838, $839, $840, $841,= $842, $843, $844, $845, $846, $847, $848, $849, $850, $851, $852, $853, $8= 54, $855, $856, $857, $858, $859, $860, $861, $862, $863, $864, $865, $866, $867, $868, $869, $870, $871, $8= 72, $873, $874, $875, $876, $877, $878, $879, $880, $881, $882, $883, $884,= $885, $886, $887, $888, $889, $890, $891, $892, $893, $894, $895, $896, $8= 97, $898, $899, $900, $901, $902, $903, $904, $905, $906, $907, $908, $909, $910, $911, $912, $913, $914, $9= 15, $916, $917, $918, $919, $920, $921, $922, $923, $924, $925, $926, $927,= $928, $929, $930, $931, $932, $933, $934, $935, $936, $937, $938, $939, $9= 40, $941, $942, $943, $944, $945, $946, $947, $948, $949, $950, $951, $952, $953, $954, $955, $956, $957, $9= 58, $959, $960, $961, $962, $963, $964, $965, $966, $967, $968, $969, $970,= $971, $972, $973, $974, $975, $976, $977, $978, $979, $980, $981, $982, $9= 83, $984, $985, $986, $987, $988, $989, $990, $991, $992, $993, $994, $995, $996, $997, $998, $999, $1000) A= ND a.COLLECTION_NAME=3Db.DOCLOC.COLLECTION_NAME AND a.DOCLOC.STAGE_ID=3D(SE= LECT MAX (STAGE_ID)

FROM COLLECTION_PIT =

WHERE COLLECTION_PIT= .COLLECTION_NAME=3Da.COLLECTION_NAME

AND COLLECTION_PIT.P= IT_ID<=3D$1001 AND COLLECTION_PIT.STAGE_CODE=3D$1002)

This e-mail is for the sole use of the intended recipient and contains info= rmation that may be privileged and/or confidential. If you are not an inten= ded recipient, please notify the sender by return e-mail and delete this e-= mail and any attachments. Certain required legal entity disclosures can be accessed on our website: https://www.thomsonreuters.com/en/resources/dis= closures.html
--0000000000006f8cc6062203237f--