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 1qxFk7-00H8ku-1J for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Oct 2023 00:02:55 +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 1qxFj7-009wEK-Ka for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Oct 2023 00:01:53 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qxFj7-009wEC-8v for pgsql-hackers@lists.postgresql.org; Mon, 30 Oct 2023 00:01:53 +0000 Received: from mail-vs1-xe30.google.com ([2607:f8b0:4864:20::e30]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qxFj4-003jfe-Kl for pgsql-hackers@lists.postgresql.org; Mon, 30 Oct 2023 00:01:52 +0000 Received: by mail-vs1-xe30.google.com with SMTP id ada2fe7eead31-45895225422so968912137.3 for ; Sun, 29 Oct 2023 17:01:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698624109; x=1699228909; 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=Nu1EDFQY4YyCV1PLofQpK+Lmq0uhVWUzLUnqakEJ3UA=; b=LsRwClGZGq1lbOeP1I/GkhuXWdwA66iGiqA1HQ1xRKQC0rmJ+3h2PmO8P/SQqR4KBR X0E/R49FGmk7O0LAvuiw9lJQu1coR1KIPCzrTYBrDVt2ZZ7upOOsFlkbXFbPhMHFfU9+ Z/2Vsc4wWmV77peDrei4w4LkJeY6gJXimXpPpd8NKoUhPR3PqjyWPlAnEtYyVMbD6sDa 69Sl6rO1iUgH61bzV6SETTpow8YDoJPIiCpP0DOVc5ETASjTjI5M/JSp/oeCv9Z84cJW 9IxXHUo1pFS+EnhhYT3Rllda2VTSeFozt5pdfhFcOrJ1BbvaZoPPvRv0+JrjJGOKBsU6 7MCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698624109; x=1699228909; 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=Nu1EDFQY4YyCV1PLofQpK+Lmq0uhVWUzLUnqakEJ3UA=; b=uXW/CbgDLYT5UpTZjxp3m4nGaiK+OJ5g6wF4vcxNx6dQOxMhDUmH9J/PGcqRPrg7MG v5iNUHwtGpjY6eyQRvcPepLJfpK5y4ZHviXgT0vEPXzhFMqoacdoPJBZz6rdEgVRI1jm iHPmw4CEVEQESsfpO5SnSBX0ib4kgoqjd1H+1lOhKWqnEYawmDIlk1np/vaqdKTIvJCm T5CyvQNuj/6w6NYz6yTBeiaB4cHnLqjZ9LtLzUkVaLqGAIKvy9dRvR0q7AQpqIEUXvFe Ch7ODuggrL1kFaa66586QxuABERDOdkZHtn+SwpnKKDZz1oCmIVt0u5TpN2WyToBubGN afwg== X-Gm-Message-State: AOJu0YwNkha8w/cXpRvCcddZmVFNEKs0VVnF0APzOo+VXugqX9HCbdeT CccYoJaJevvcgmpUzyP8OlDWJ2VSsQzNCc3anfHC4E2xkiHq6g== X-Google-Smtp-Source: AGHT+IGI/HVpnh16snKC8ppCp93hrvEu3qzh7D631puq2JL5JzueZ6/lI/uFWwosXznTVNSVJwYgkAGOuzcNvuMCLuE= X-Received: by 2002:a67:c00b:0:b0:457:e3bb:867 with SMTP id v11-20020a67c00b000000b00457e3bb0867mr4832718vsi.6.1698624109225; Sun, 29 Oct 2023 17:01:49 -0700 (PDT) MIME-Version: 1.0 References: <831f17ba-ff36-1380-a475-a7cd2c65a89c@enterprisedb.com> <6f010a6e-8e20-658b-dc05-dc9033a694da@eisentraut.org> <7d44dade-ff31-5eef-80ac-78ed838066f6@postgresfriends.org> <88dadcc1-6652-ff7d-264d-73906a53dee9@illuminatedcomputing.com> <5157e85a-6007-27a7-853a-5601d9c3722f@illuminatedcomputing.com> <5a16a59a-d497-7d72-07aa-0afc09d5193a@illuminatedcomputing.com> In-Reply-To: From: jian he Date: Mon, 30 Oct 2023 08:00:00 +0800 Message-ID: Subject: Re: SQL:2011 application time To: Paul Jungwirth Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000a359eb0608e3bec3" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a359eb0608e3bec3 Content-Type: text/plain; charset="UTF-8" hi. * The attached patch makes foreign keys with PERIOD fail if any of the foreign key columns is "generated columns". * The following queries will cause segmentation fault. not sure the best way to fix it. the reason in LINE: numpks = transformColumnNameList(RelationGetRelid(pkrel), fkconstraint->pk_attrs, pkattnum, pktypoid); begin; drop table if exists temporal3,temporal_fk_rng2rng; CREATE TABLE temporal3 (id int4range,valid_at tsrange, CONSTRAINT temporal3_pk PRIMARY KEY (id, valid_at WITHOUT OVERLAPS)); CREATE TABLE temporal_fk_rng2rng ( id int4range,valid_at tsrange,parent_id int4range, CONSTRAINT temporal_fk_rng2rng_pk PRIMARY KEY (id, valid_at WITHOUT OVERLAPS), CONSTRAINT temporal_fk_rng2rng_fk FOREIGN KEY (parent_id, PERIOD valid_at) REFERENCES temporal3 (id, valid_at) ); * change the function FindFKComparisonOperators's "eqstrategy" to make pg_constraint record correct {conpfeqop,conppeqop,conffeqop}. * fix the ON DELETE SET NULL/DEFAULT (columnlist). Now the following queries error will be more consistent. ALTER TABLE temporal_fk_rng2rng DROP CONSTRAINT temporal_fk_rng2rng_fk, ADD CONSTRAINT temporal_fk_rng2rng_fk FOREIGN KEY (parent_id, PERIOD valid_at) REFERENCES temporal_rng ON DELETE SET DEFAULT(valid_at); --ON DELETE SET NULL(valid_at); * refactor restrict_cascading_range function. * you did if (numfks != numpks) before if (is_temporal) {numfks += 1;}, So I changed the code order to make the error report more consistent. anyway, I put it in one patch. please check the attached. --000000000000a359eb0608e3bec3 Content-Type: text/x-patch; charset="UTF-8"; name="v1-0001-various-small-fixes.patch" Content-Disposition: attachment; filename="v1-0001-various-small-fixes.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lob4226n0 RnJvbSA3ZGMyMTk0ZjliZDQ2Y2ZlZTdjZmM3NzRhMmU1MmEyYjY0ZDQ2NWVhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBwZ2FkZGljdCA8amlhbi51bml2ZXJzYWxpdHlAZ21haWwuY29t PgpEYXRlOiBTdW4sIDI5IE9jdCAyMDIzIDE0OjQyOjU3ICswODAwClN1YmplY3Q6IFtQQVRDSCB2 MSAxLzFdIHZhcmlvdXMgc21hbGwgZml4ZXMuCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlw ZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4 Yml0CgoqIFRoZSBhdHRhY2hlZCBwYXRjaCBtYWtlcyBmb3JlaWduIGtleXMgd2l0aCBQRVJJT0Qg ZmFpbCBpZiBhbnkgb2YgdGhlIGZvcmVpZ24ga2V5IGNvbHVtbnMgaXMgImdlbmVyYXRlZCBjb2x1 bW5zIi4KKiBjaGFuZ2UgdGhlIGZ1bmN0aW9uIEZpbmRGS0NvbXBhcmlzb25PcGVyYXRvcnMncyAi ZXFzdHJhdGVneSIgwqB0byBtYWtlIHBnX2NvbnN0cmFpbnQgcmVjb3JkIGNvcnJlY3Qge2NvbnBm ZXFvcCxjb25wcGVxb3AsY29uZmZlcW9wfS4KKiByZWZhY3RvciByZXN0cmljdF9jYXNjYWRpbmdf cmFuZ2UgZnVuY3Rpb24uCiogZmlyc3QgKGlzX3RlbXBvcmFsKSB7bnVtZmtzICs9IDE7fSB0aGVu IChudW1ma3MgIT0gbnVtcGtzKSB2YWxpZGF0aW9uLgoqIHZhcmlhYmxlIGNvbW1lbnQgZml4Lgot LS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgIHwgOTYgKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jIHwg MzIgKysrKystLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA2OSBpbnNlcnRpb25zKCspLCA1OSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDVhZTBmMTEzLi44NmU5OWM4 MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTUyMiw3ICs1MjIsNyBAQCBzdGF0aWMg T2JqZWN0QWRkcmVzcyBhZGRGa1JlY3Vyc2VSZWZlcmVuY2VkKExpc3QgKip3cXVldWUsIENvbnN0 cmFpbnQgKmZrY29uc3RyYQogCQkJCQkJCQkJCQlib29sIGlzX3RlbXBvcmFsKTsKIHN0YXRpYyB2 b2lkIHZhbGlkYXRlRmtPbkRlbGV0ZVNldENvbHVtbnMoaW50IG51bWZrcywgY29uc3QgaW50MTYg KmZrYXR0bnVtcywKIAkJCQkJCQkJCQkgaW50IG51bWZrc2V0Y29scywgY29uc3QgaW50MTYgKmZr c2V0Y29sc2F0dG51bXMsCi0JCQkJCQkJCQkJIExpc3QgKmZrc2V0Y29scyk7CisJCQkJCQkJCQkJ IGNvbnN0IGludDE2ICpma3BlcmlvZGF0dG51bXMsIExpc3QgKmZrc2V0Y29scyk7CiBzdGF0aWMg dm9pZCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpm a2NvbnN0cmFpbnQsCiAJCQkJCQkJCQlSZWxhdGlvbiByZWwsIFJlbGF0aW9uIHBrcmVsLCBPaWQg aW5kZXhPaWQsIE9pZCBwYXJlbnRDb25zdHIsCiAJCQkJCQkJCQlpbnQgbnVtZmtzLCBpbnQxNiAq cGthdHRudW0sIGludDE2ICpma2F0dG51bSwKQEAgLTEwMjkyLDYgKzEwMjkyLDcgQEAgQVRBZGRG b3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIs IFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCQkJICBma2RlbHNldGNvbHMsIE5VTEwpOwogCXZhbGlk YXRlRmtPbkRlbGV0ZVNldENvbHVtbnMobnVtZmtzLCBma2F0dG51bSwKIAkJCQkJCQkJIG51bWZr ZGVsc2V0Y29scywgZmtkZWxzZXRjb2xzLAorCQkJCQkJCQkgZmtwZXJpb2RhdHRudW1zLAogCQkJ CQkJCQkgZmtjb25zdHJhaW50LT5ma19kZWxfc2V0X2NvbHMpOwogCiAJLyoKQEAgLTEwMzI1LDYg KzEwMzI2LDQzIEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0 ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJICAgb3BjbGFzc2Vz KTsKIAl9CiAKKwkvKgorCSAqIE9uIHRoZSBzdHJlbmd0aCBvZiBhIHByZXZpb3VzIGNvbnN0cmFp bnQsIHdlIG1pZ2h0IGF2b2lkIHNjYW5uaW5nCisJICogdGFibGVzIHRvIHZhbGlkYXRlIHRoaXMg b25lLiAgU2VlIGJlbG93LgorCSAqLworCW9sZF9jaGVja19vayA9IChma2NvbnN0cmFpbnQtPm9s ZF9jb25wZmVxb3AgIT0gTklMKTsKKwlBc3NlcnQoIW9sZF9jaGVja19vayB8fCBudW1ma3MgPT0g bGlzdF9sZW5ndGgoZmtjb25zdHJhaW50LT5vbGRfY29ucGZlcW9wKSk7CisKKwlmb3IgKGkgPSAw OyBpIDwgbnVtcGtzOyBpKyspCisJeworCQlGaW5kRktDb21wYXJpc29uT3BlcmF0b3JzKAorCQkJ CWZrY29uc3RyYWludCwgdGFiLCBpLCBma2F0dG51bSwKKwkJCQkmb2xkX2NoZWNrX29rLCAmb2xk X3BmZXFvcF9pdGVtLAorCQkJCXBrdHlwb2lkW2ldLCBma3R5cG9pZFtpXSwgb3BjbGFzc2VzW2ld LAorCQkJCWlzX3RlbXBvcmFsLCBmYWxzZSwKKwkJCQkmcGZlcW9wZXJhdG9yc1tpXSwgJnBwZXFv cGVyYXRvcnNbaV0sICZmZmVxb3BlcmF0b3JzW2ldKTsKKwl9CisJLyogc2V0IHBmZXEsIHBwZXEs IGZmZXEgb3BlcmF0b3JzIGZvciB3aXRob3V0b3ZlcmxhcHMgY29uc3RyYWludC4KKwkgKiB0aGlz IGFsc28gYXNzdW1lIG92ZXJsYXBzIGlzIHRoZSBsYXN0IGtleSBjb2x1bW5zIGluIGNvbnN0cmFp bnQuCisJICoKKwkqLworCWlmIChpc190ZW1wb3JhbCkKKwl7CisJCXBrYXR0bnVtW251bXBrc10g PSBwa3BlcmlvZGF0dG51bXNbMF07CisJCXBrdHlwb2lkW251bXBrc10gPSBwa3BlcmlvZHR5cG9p ZHNbMF07CisJCWZrYXR0bnVtW251bXBrc10gPSBma3BlcmlvZGF0dG51bXNbMF07CisJCWZrdHlw b2lkW251bXBrc10gPSBma3BlcmlvZHR5cG9pZHNbMF07CisKKwkJRmluZEZLQ29tcGFyaXNvbk9w ZXJhdG9ycygKKwkJCQlma2NvbnN0cmFpbnQsIHRhYiwgbnVtcGtzLCBma2F0dG51bSwKKwkJCQkm b2xkX2NoZWNrX29rLCAmb2xkX3BmZXFvcF9pdGVtLAorCQkJCXBrcGVyaW9kdHlwb2lkc1swXSwg ZmtwZXJpb2R0eXBvaWRzWzBdLCBvcGNsYXNzZXNbbnVtcGtzXSwKKwkJCQlpc190ZW1wb3JhbCwg dHJ1ZSwKKwkJCQkmcGZlcW9wZXJhdG9yc1tudW1wa3NdLCAmcHBlcW9wZXJhdG9yc1tudW1wa3Nd LCAmZmZlcW9wZXJhdG9yc1tudW1wa3NdKTsKKwkJbnVtZmtzICs9IDE7CisJCW51bXBrcyArPSAx OworCX0KKwogCS8qCiAJICogTm93IHdlIGNhbiBjaGVjayBwZXJtaXNzaW9ucy4KIAkgKi8KQEAg LTEwMzcxLDM4ICsxMDQwOSw2IEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAqKndx dWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQkJKGVycmNvZGUo RVJSQ09ERV9JTlZBTElEX0ZPUkVJR05fS0VZKSwKIAkJCQkgZXJybXNnKCJudW1iZXIgb2YgcmVm ZXJlbmNpbmcgYW5kIHJlZmVyZW5jZWQgY29sdW1ucyBmb3IgZm9yZWlnbiBrZXkgZGlzYWdyZWUi KSkpOwogCi0JLyoKLQkgKiBPbiB0aGUgc3RyZW5ndGggb2YgYSBwcmV2aW91cyBjb25zdHJhaW50 LCB3ZSBtaWdodCBhdm9pZCBzY2FubmluZwotCSAqIHRhYmxlcyB0byB2YWxpZGF0ZSB0aGlzIG9u ZS4gIFNlZSBiZWxvdy4KLQkgKi8KLQlvbGRfY2hlY2tfb2sgPSAoZmtjb25zdHJhaW50LT5vbGRf Y29ucGZlcW9wICE9IE5JTCk7Ci0JQXNzZXJ0KCFvbGRfY2hlY2tfb2sgfHwgbnVtZmtzID09IGxp c3RfbGVuZ3RoKGZrY29uc3RyYWludC0+b2xkX2NvbnBmZXFvcCkpOwotCi0JZm9yIChpID0gMDsg aSA8IG51bXBrczsgaSsrKQotCXsKLQkJRmluZEZLQ29tcGFyaXNvbk9wZXJhdG9ycygKLQkJCQlm a2NvbnN0cmFpbnQsIHRhYiwgaSwgZmthdHRudW0sCi0JCQkJJm9sZF9jaGVja19vaywgJm9sZF9w ZmVxb3BfaXRlbSwKLQkJCQlwa3R5cG9pZFtpXSwgZmt0eXBvaWRbaV0sIG9wY2xhc3Nlc1tpXSwK LQkJCQlpc190ZW1wb3JhbCwgZmFsc2UsCi0JCQkJJnBmZXFvcGVyYXRvcnNbaV0sICZwcGVxb3Bl cmF0b3JzW2ldLCAmZmZlcW9wZXJhdG9yc1tpXSk7Ci0JfQotCWlmIChpc190ZW1wb3JhbCkgewot CQlwa2F0dG51bVtudW1wa3NdID0gcGtwZXJpb2RhdHRudW1zWzBdOwotCQlwa3R5cG9pZFtudW1w a3NdID0gcGtwZXJpb2R0eXBvaWRzWzBdOwotCQlma2F0dG51bVtudW1wa3NdID0gZmtwZXJpb2Rh dHRudW1zWzBdOwotCQlma3R5cG9pZFtudW1wa3NdID0gZmtwZXJpb2R0eXBvaWRzWzBdOwotCi0J CUZpbmRGS0NvbXBhcmlzb25PcGVyYXRvcnMoCi0JCQkJZmtjb25zdHJhaW50LCB0YWIsIG51bXBr cywgZmthdHRudW0sCi0JCQkJJm9sZF9jaGVja19vaywgJm9sZF9wZmVxb3BfaXRlbSwKLQkJCQlw a3BlcmlvZHR5cG9pZHNbMF0sIGZrcGVyaW9kdHlwb2lkc1swXSwgb3BjbGFzc2VzW251bXBrc10s Ci0JCQkJaXNfdGVtcG9yYWwsIHRydWUsCi0JCQkJJnBmZXFvcGVyYXRvcnNbbnVtcGtzXSwgJnBw ZXFvcGVyYXRvcnNbbnVtcGtzXSwgJmZmZXFvcGVyYXRvcnNbbnVtcGtzXSk7Ci0JCW51bWZrcyAr PSAxOwotCQludW1wa3MgKz0gMTsKLQl9Ci0KIAkvKgogCSAqIENyZWF0ZSBhbGwgdGhlIGNvbnN0 cmFpbnQgYW5kIHRyaWdnZXIgb2JqZWN0cywgcmVjdXJzaW5nIHRvIHBhcnRpdGlvbnMKIAkgKiBh cyBuZWNlc3NhcnkuICBGaXJzdCBoYW5kbGUgdGhlIHJlZmVyZW5jZWQgc2lkZS4KQEAgLTEwNDU1 LDExICsxMDQ2MSwxMyBAQCBBVEFkZEZvcmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUs IEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogdm9pZAogdmFsaWRhdGVGa09u RGVsZXRlU2V0Q29sdW1ucyhpbnQgbnVtZmtzLCBjb25zdCBpbnQxNiAqZmthdHRudW1zLAogCQkJ CQkJCSBpbnQgbnVtZmtzZXRjb2xzLCBjb25zdCBpbnQxNiAqZmtzZXRjb2xzYXR0bnVtcywKLQkJ CQkJCQkgTGlzdCAqZmtzZXRjb2xzKQorCQkJCQkJCWNvbnN0IGludDE2ICpma3BlcmlvZGF0dG51 bXMsIExpc3QgKmZrc2V0Y29scykKIHsKIAlmb3IgKGludCBpID0gMDsgaSA8IG51bWZrc2V0Y29s czsgaSsrKQogCXsKIAkJaW50MTYJCXNldGNvbF9hdHRudW0gPSBma3NldGNvbHNhdHRudW1zW2ld OworCQkvKiBhc3N1bWUgb25seSBvbmUgUEVSSU9EIGtleSBjb2x1bW4gaW4gZm9yZWlnbiBrZXkg Ki8KKwkJaW50MTYJCWZrcGVyaW9kX2F0dG51bSA9IGZrcGVyaW9kYXR0bnVtc1swXTsKIAkJYm9v bAkJc2VlbiA9IGZhbHNlOwogCiAJCWZvciAoaW50IGogPSAwOyBqIDwgbnVtZmtzOyBqKyspCkBA IC0xMDQ2OSw2ICsxMDQ3NywxNCBAQCB2YWxpZGF0ZUZrT25EZWxldGVTZXRDb2x1bW5zKGludCBu dW1ma3MsIGNvbnN0IGludDE2ICpma2F0dG51bXMsCiAJCQkJc2VlbiA9IHRydWU7CiAJCQkJYnJl YWs7CiAJCQl9CisJCQlpZiAoZmtwZXJpb2RfYXR0bnVtID09IHNldGNvbF9hdHRudW0pCisJCQl7 CisJCQkJY2hhcgkgICAqY29sID0gc3RyVmFsKGxpc3RfbnRoKGZrc2V0Y29scywgaSkpOworCisJ CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9DT0xVTU5f UkVGRVJFTkNFKSwKKwkJCQkJCWVycm1zZygiY29sdW1uIFwiJXNcIiByZWZlcmVuY2VkIGluIE9O IERFTEVURSBTRVQgYWN0aW9uIGNhbm5vdCBiZSBQRVJJT0QgIiwgY29sKSkpOworCQkJfQogCQl9 CiAKIAkJaWYgKCFzZWVuKQpAQCAtMTE1MDIsNyArMTE1MTgsNyBAQCBGaW5kRktDb21wYXJpc29u T3BlcmF0b3JzKENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwKIAkJICogRm9yIHRoZSBub24tb3Zl cmxhcHMgcGFydHMsIHdlIHdhbnQgZWl0aGVyIFJURXF1YWxTdHJhdGVneU51bWJlciAod2l0aG91 dCBidHJlZV9naXN0KQogCQkgKiBvciBCVEVxdWFsU3RyYXRlZ3lOdW1iZXIgKHdpdGggYnRyZWVf Z2lzdCkuIFdlJ2xsIHRyeSB0aGUgbGF0dGVyIGZpcnN0LgogCQkgKi8KLQkJZXFzdHJhdGVneSA9 IGZvcl9vdmVybGFwcyA/IFJUT3ZlcmxhcFN0cmF0ZWd5TnVtYmVyIDogQlRFcXVhbFN0cmF0ZWd5 TnVtYmVyOworCQllcXN0cmF0ZWd5ID0gZm9yX292ZXJsYXBzID8gUlRPdmVybGFwU3RyYXRlZ3lO dW1iZXIgOiBSVEVxdWFsU3RyYXRlZ3lOdW1iZXI7CiAJfQogCWVsc2UKIAl7CkBAIC0xMTUyMSwx OSArMTE1MzcsMTEgQEAgRmluZEZLQ29tcGFyaXNvbk9wZXJhdG9ycyhDb25zdHJhaW50ICpma2Nv bnN0cmFpbnQsCiAJLyoKIAkgKiBUaGVyZSBoYWQgYmV0dGVyIGJlIGEgcHJpbWFyeSBlcXVhbGl0 eSBvcGVyYXRvciBmb3IgdGhlIGluZGV4LgogCSAqIFdlJ2xsIHVzZSBpdCBmb3IgUEsgPSBQSyBj b21wYXJpc29ucy4KKwkgKiBUaGlzIGFwcGx5IHRvIGdpc3QgYW5kIGJ0cmVlIGluZGV4IG1ldGhv ZC4KIAkgKi8KIAlwcGVxb3AgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBvcGNpbnR5 cGUsIG9wY2ludHlwZSwKIAkJCQkJCQkJIGVxc3RyYXRlZ3kpOwogCi0JLyogRmFsbCBiYWNrIHRv IFJURXF1YWxTdHJhdGVneU51bWJlciBmb3IgdGVtcG9yYWwgb3ZlcmxhcHMgKi8KLQlpZiAoaXNf dGVtcG9yYWwgJiYgIWZvcl9vdmVybGFwcyAmJiAhT2lkSXNWYWxpZChwcGVxb3ApKQotCXsKLQkJ ZXFzdHJhdGVneSA9IFJURXF1YWxTdHJhdGVneU51bWJlcjsKLQkJcHBlcW9wID0gZ2V0X29wZmFt aWx5X21lbWJlcihvcGZhbWlseSwgb3BjaW50eXBlLCBvcGNpbnR5cGUsCi0JCQkJCQkJCQkgZXFz dHJhdGVneSk7Ci0JfQotCi0KIAlpZiAoIU9pZElzVmFsaWQocHBlcW9wKSkKIAkJZWxvZyhFUlJP UiwgIm1pc3Npbmcgb3BlcmF0b3IgJWQoJXUsJXUpIGluIG9wZmFtaWx5ICV1IiwKIAkJCSBlcXN0 cmF0ZWd5LCBvcGNpbnR5cGUsIG9wY2ludHlwZSwgb3BmYW1pbHkpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv cmlfdHJpZ2dlcnMuYwppbmRleCBkMDAyNzkxOC4uMDhiNDY1MzYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9yaV90cmlnZ2Vycy5jCkBAIC0yNDUsNyArMjQ1LDcgQEAgc3RhdGljIHZvaWQgcmlfUmVwb3J0 VmlvbGF0aW9uKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJCQkJCQkJICAgaW50 IHF1ZXJ5bm8sIGJvb2wgcGFydGdvbmUpIHBnX2F0dHJpYnV0ZV9ub3JldHVybigpOwogc3RhdGlj IGJvb2wgZnBvX3RhcmdldHNfcGtfcmFuZ2UoY29uc3QgRm9yUG9ydGlvbk9mU3RhdGUgKnRnX3Rl bXBvcmFsLAogCQkJCQkJCQkgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbyk7Ci1zdGF0 aWMgRGF0dW0gcmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlKGNvbnN0IEZvclBvcnRpb25PZlN0YXRl ICp0Z190ZW1wb3JhbCwKK3N0YXRpYyBEYXR1bSBnZXRfcG9ydGlvbl9pbnRlcnNlY3RfcmFuZ2Uo Y29uc3QgRm9yUG9ydGlvbk9mU3RhdGUgKnRnX3RlbXBvcmFsLAogCQkJCQkJCQkJICBjb25zdCBS SV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQkJCQkJCQkJICBUdXBsZVRhYmxlU2xvdCAqb2xk c2xvdCk7CiAKQEAgLTgxNiw3ICs4MTYsNyBAQCByaV9yZXN0cmljdChUcmlnZ2VyRGF0YSAqdHJp Z2RhdGEsIGJvb2wgaXNfbm9fYWN0aW9uKQogCWlmICh0cmlnZGF0YS0+dGdfdGVtcG9yYWwpCiAJ ewogCQl0YXJnZXRSYW5nZVBhcmFtID0gcmlpbmZvLT5ua2V5cyAtIDE7Ci0JCXRhcmdldFJhbmdl ID0gcmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlKHRyaWdkYXRhLT50Z190ZW1wb3JhbCwgcmlpbmZv LCBvbGRzbG90KTsKKwkJdGFyZ2V0UmFuZ2UgPSBnZXRfcG9ydGlvbl9pbnRlcnNlY3RfcmFuZ2Uo dHJpZ2RhdGEtPnRnX3RlbXBvcmFsLCByaWluZm8sIG9sZHNsb3QpOwogCX0KIAogCXJpX1BlcmZv cm1DaGVjayhyaWluZm8sICZxa2V5LCBxcGxhbiwKQEAgLTE0MzUsNyArMTQzNSw3IEBAIFRSSV9G S2V5X2Nhc2NhZGVfZGVsKFBHX0ZVTkNUSU9OX0FSR1MpCiAJICogRG9uJ3QgZGVsZXRlIHRoYW4g bW9yZSB0aGFuIHRoZSBQSydzIGR1cmF0aW9uLAogCSAqIHRyaW1tZWQgYnkgYW4gb3JpZ2luYWwg Rk9SIFBPUlRJT04gT0YgaWYgbmVjZXNzYXJ5LgogCSAqLwotCXRhcmdldFJhbmdlID0gcmVzdHJp Y3RfY2FzY2FkaW5nX3JhbmdlKHRyaWdkYXRhLT50Z190ZW1wb3JhbCwgcmlpbmZvLCBvbGRzbG90 KTsKKwl0YXJnZXRSYW5nZSA9IGdldF9wb3J0aW9uX2ludGVyc2VjdF9yYW5nZSh0cmlnZGF0YS0+ dGdfdGVtcG9yYWwsIHJpaW5mbywgb2xkc2xvdCk7CiAKIAlpZiAoU1BJX2Nvbm5lY3QoKSAhPSBT UElfT0tfQ09OTkVDVCkKIAkJZWxvZyhFUlJPUiwgIlNQSV9jb25uZWN0IGZhaWxlZCIpOwpAQCAt MTQ4MCw3ICsxNDgwLDcgQEAgVFJJX0ZLZXlfY2FzY2FkZV9kZWwoUEdfRlVOQ1RJT05fQVJHUykK IAogCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsCiAJCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlp bmZvLT5ma19hdHRudW1zW2ldKSk7Ci0JCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIsIGkgKyAx KTsKKwkJCXNucHJpbnRmKHBhcmFtbmFtZSwgc2l6ZW9mKHBhcmFtbmFtZSksICIkJWQiLCBpICsg MSk7CiAJCQlyaV9HZW5lcmF0ZVF1YWwoJnF1ZXJ5YnVmLCBxdWVyeXNlcCwKIAkJCQkJCQlwYXJh bW5hbWUsIHBrX3R5cGUsCiAJCQkJCQkJcmlpbmZvLT5wZl9lcV9vcHJzW2ldLApAQCAtMTU5Niw3 ICsxNTk2LDcgQEAgVFJJX0ZLZXlfY2FzY2FkZV91cGQoUEdfRlVOQ1RJT05fQVJHUykKIAkgKiBE b24ndCBkZWxldGUgdGhhbiBtb3JlIHRoYW4gdGhlIFBLJ3MgZHVyYXRpb24sCiAJICogdHJpbW1l ZCBieSBhbiBvcmlnaW5hbCBGT1IgUE9SVElPTiBPRiBpZiBuZWNlc3NhcnkuCiAJICovCi0JdGFy Z2V0UmFuZ2UgPSByZXN0cmljdF9jYXNjYWRpbmdfcmFuZ2UodHJpZ2RhdGEtPnRnX3RlbXBvcmFs LCByaWluZm8sIG9sZHNsb3QpOworCXRhcmdldFJhbmdlID0gZ2V0X3BvcnRpb25faW50ZXJzZWN0 X3JhbmdlKHRyaWdkYXRhLT50Z190ZW1wb3JhbCwgcmlpbmZvLCBvbGRzbG90KTsKIAogCWlmIChT UElfY29ubmVjdCgpICE9IFNQSV9PS19DT05ORUNUKQogCQllbG9nKEVSUk9SLCAiU1BJX2Nvbm5l Y3QgZmFpbGVkIik7CkBAIC0xNjIxLDkgKzE2MjEsMTEgQEAgVFJJX0ZLZXlfY2FzY2FkZV91cGQo UEdfRlVOQ1RJT05fQVJHUykKIAkJICogIFVQREFURSBbT05MWV0gPGZrdGFibGU+CiAJCSAqCQkg IEZPUiBQT1JUSU9OIE9GICRma2F0dCBGUk9NIGxvd2VyKCR7Mm4rMX0pIFRPIHVwcGVyKCR7Mm4r MX0pCiAJCSAqCQkgIFNFVCBma2F0dDEgPSAkMSwgWywgLi4uXQotCQkgKgkJICBXSEVSRSAkbiA9 IGZrYXR0MSBbQU5EIC4uLl0KKwkJICoJCSAgV0hFUkUgJG4gKyAxID0gZmthdHQxIFtBTkQgLi4u XQogCQkgKiBUaGUgdHlwZSBpZCdzIGZvciB0aGUgJCBwYXJhbWV0ZXJzIGFyZSB0aG9zZSBvZiB0 aGUKLQkJICogY29ycmVzcG9uZGluZyBQSyBhdHRyaWJ1dGVzLiAgTm90ZSB0aGF0IHdlIGFyZSBh c3N1bWluZworCQkgKiBjb3JyZXNwb25kaW5nIFBLIGF0dHJpYnV0ZXMuIHJpX1BlcmZvcm1DaGVj ayBuZWVkIGZpbGxpbgorCQkgKiBvbGRzbG90IGFuZCBuZXdzbG90IGtleSB2YWx1ZXMuIHNvIHdl IHB1dCB0YXJnZXRSYW5nZShQb3J0aW9uKQorCQkgKiB0byAkezJuKzF9LiBOb3RlIHRoYXQgd2Ug YXJlIGFzc3VtaW5nCiAJCSAqIHRoZXJlIGlzIGFuIGFzc2lnbm1lbnQgY2FzdCBmcm9tIHRoZSBQ SyB0byB0aGUgRksgdHlwZTsKIAkJICogZWxzZSB0aGUgcGFyc2VyIHdpbGwgZmFpbC4KIAkJICog LS0tLS0tLS0tLQpAQCAtMTY1OCw3ICsxNjYwLDcgQEAgVFJJX0ZLZXlfY2FzY2FkZV91cGQoUEdf RlVOQ1RJT05fQVJHUykKIAkJCQkJCQkJICIlcyAlcyA9ICQlZCIsCiAJCQkJCQkJCSBxdWVyeXNl cCwgYXR0bmFtZSwgaSArIDEpOwogCi0JCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIsIGogKyAx KTsKKwkJCXNucHJpbnRmKHBhcmFtbmFtZSwgc2l6ZW9mKHBhcmFtbmFtZSksICIkJWQiLCBqICsg MSk7CiAJCQlyaV9HZW5lcmF0ZVF1YWwoJnF1YWxidWYsIHF1YWxzZXAsCiAJCQkJCQkJcGFyYW1u YW1lLCBwa190eXBlLAogCQkJCQkJCXJpaW5mby0+cGZfZXFfb3Byc1tpXSwKQEAgLTE3OTMsNyAr MTc5NSw3IEBAIHRyaV9zZXQoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX3NldF9udWxs LCBpbnQgdGdraW5kKQogCSAqIERvbid0IFNFVCBOVUxML0RFRkFVTFQgdGhhbiBtb3JlIHRoYW4g dGhlIFBLJ3MgZHVyYXRpb24sCiAJICogdHJpbW1lZCBieSBhbiBvcmlnaW5hbCBGT1IgUE9SVElP TiBPRiBpZiBuZWNlc3NhcnkuCiAJICovCi0JdGFyZ2V0UmFuZ2UgPSByZXN0cmljdF9jYXNjYWRp bmdfcmFuZ2UodHJpZ2RhdGEtPnRnX3RlbXBvcmFsLCByaWluZm8sIG9sZHNsb3QpOworCXRhcmdl dFJhbmdlID0gZ2V0X3BvcnRpb25faW50ZXJzZWN0X3JhbmdlKHRyaWdkYXRhLT50Z190ZW1wb3Jh bCwgcmlpbmZvLCBvbGRzbG90KTsKIAogCWlmIChTUElfY29ubmVjdCgpICE9IFNQSV9PS19DT05O RUNUKQogCQllbG9nKEVSUk9SLCAiU1BJX2Nvbm5lY3QgZmFpbGVkIik7CkBAIC0xOTEwLDcgKzE5 MTIsNyBAQCB0cmlfc2V0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19zZXRfbnVsbCwg aW50IHRna2luZCkKIAkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAogCQkJCQkJIFJJQXR0TmFtZShm a19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkpOwogCi0JCQlzcHJpbnRmKHBhcmFtbmFtZSwg IiQlZCIsIGkgKyAxKTsKKwkJCXNucHJpbnRmKHBhcmFtbmFtZSwgc2l6ZW9mKHBhcmFtbmFtZSks ICIkJWQiLCBpICsgMSk7CiAJCQlyaV9HZW5lcmF0ZVF1YWwoJnF1ZXJ5YnVmLCBxdWFsc2VwLAog CQkJCQkJCXBhcmFtbmFtZSwgcGtfdHlwZSwKIAkJCQkJCQlyaWluZm8tPnBmX2VxX29wcnNbaV0s CkBAIC0zODc3LDE3ICszODc5LDE3IEBAIGZwb190YXJnZXRzX3BrX3JhbmdlKGNvbnN0IEZvclBv cnRpb25PZlN0YXRlICp0Z190ZW1wb3JhbCwgY29uc3QgUklfQ29uc3RyYWludEluCiB9CiAKIC8q Ci0gKiByZXN0cmljdF9jYXNjYWRpbmdfcmFuZ2UgLQorICogZ2V0X3BvcnRpb25faW50ZXJzZWN0 X3JhbmdlIC0KICAqCiAgKiBSZXR1cm5zIGEgRGF0dW0gb2YgUmFuZ2VUeXBlUCBob2xkaW5nIHRo ZSBhcHByb3ByaWF0ZSB0aW1lc3BhbgogICogdG8gdGFyZ2V0IGNoaWxkIHJlY29yZHMgd2hlbiB3 ZSBDQVNDQURFL1NFVCBOVUxML1NFVCBERUZBVUxULgogICoKLSAqIEluIGEgbm9ybWFsIFVQREFU RS9ERUxFVEUgdGhpcyBzaG91bGQgYmUgdGhlIHBhcmVudCdzIG93biB2YWxpZCB0aW1lLAotICog YnV0IGlmIHRoZXJlIHdhcyBhIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSwgdGhlbiB3ZSBzaG91bGQg dXNlIHRoYXQgdG8KLSAqIHRyaW0gZG93biB0aGUgcGFyZW50J3Mgc3BhbiBmdXJ0aGVyLgorICog SW4gYSBub3JtYWwgVVBEQVRFL0RFTEVURSB0aGlzIHNob3VsZCBiZSB0aGUgcGFyZW50J3Mgb3du IHZhbGlkIHJhbmdlLAorICogYnV0IGlmIHRoZXJlIHdhcyBhIEZPUiBQT1JUSU9OIE9GIGNsYXVz ZSwgdGhlbiB3ZSBzaG91bGQKKyAqIGdldCB0aGUgaW50ZXJzZWN0IG9mIG9sZCB2YWxpZCByYW5n ZSBhbmQgRk9SIFBPUlRJT04gT0YgY2xhdXNlJ3MgcmFuZ2UuCiAgKi8KIHN0YXRpYyBEYXR1bQot cmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlKGNvbnN0IEZvclBvcnRpb25PZlN0YXRlICp0Z190ZW1w b3JhbCwgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywgVHVwbGVUYWJsZVNsb3QgKm9s ZHNsb3QpCitnZXRfcG9ydGlvbl9pbnRlcnNlY3RfcmFuZ2UoY29uc3QgRm9yUG9ydGlvbk9mU3Rh dGUgKnRnX3RlbXBvcmFsLCBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLCBUdXBsZVRh YmxlU2xvdCAqb2xkc2xvdCkKIHsKIAlEYXR1bQlwa1JlY29yZFJhbmdlOwogCWJvb2wJaXNudWxs OwotLSAKMi4zNC4xCgo= --000000000000a359eb0608e3bec3--