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 1tUi17-00245j-Tc for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Jan 2025 07:59:18 +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 1tUi16-006IZa-CW for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Jan 2025 07:59:16 +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 1tUi15-006IZS-Nv for pgsql-hackers@lists.postgresql.org; Mon, 06 Jan 2025 07:59:15 +0000 Received: from mail-ua1-x935.google.com ([2607:f8b0:4864:20::935]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tUi13-0007Fm-0g for pgsql-hackers@lists.postgresql.org; Mon, 06 Jan 2025 07:59:14 +0000 Received: by mail-ua1-x935.google.com with SMTP id a1e0cc1a2514c-85c5adbca8eso2738945241.0 for ; Sun, 05 Jan 2025 23:59:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1736150352; x=1736755152; 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=aoJFD9uAqv6TSauZPQ48C4P12r0/vZK1Bwbj7dtTxqQ=; b=RDVdGoIVvJ2+Dz80bTFeB7vreXZ6cZWiAy4KNDAgx5rE2iQ6fi9oCdlyAK43j4ObS/ oFO/21mZbQc+NBa8pITlort+A2cYZGLcHypW7Cr9/rwdRwziLkt+3SSOCjL+guE+CKms KYGK04+U/QuXJUC0Mfg2AEco9wgcbNhXW85m35Znc8Ae2HtsOUJMUby2ylBAnOflGoO/ 3anyTt/Ynp/oXo66wltVJRuIQctqabdO/+fX8slEJJGii93oicm+MpeILtYSR8NT05Jj cPZKuT6KIXndvPyY9VPxS4vxB/prd11jYwruC2iIhCPBR1mmIhGpT97bsFfBv6nih1fE bkQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736150352; x=1736755152; 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=aoJFD9uAqv6TSauZPQ48C4P12r0/vZK1Bwbj7dtTxqQ=; b=pZKe86AZNZYzBvJBaVMF17EnY+nnMUQcUE3knKCjZ+Lv6ENbJNGr1JvjjHT+XciICs ET7uuoJeJhtByg2qRzzBhp1lhqfyNVCzur+IaUoLXHuAYPrkAiiHPLVgAN3EUXscnGNA iMylMfozKkI/+qMIypJ4dk+yKORO319lck9SeZ5yjqSBx69EHUJblIxnZZbtAmuUwYHD cuSX+4xPXDaQexHtqTQSTPRLzEMvA6o/8k0K0xRLrW9jkvLD99wZSqKu7SITJA34EfOB pmFwVG+d4ZoMUpeAzQO/lo3GoK4OthoSON71bKZz7moaEnvtcUZPcNzQ/echWOCUiENO qcIw== X-Forwarded-Encrypted: i=1; AJvYcCUQcHGNZCmCrmElUUs+P3PNnb3TMYg5CHbA3jFFf2Hp/Mc5/r2sxR4dWyAHTEAB/OX3+O9bFpp2OdBf5NGU@lists.postgresql.org X-Gm-Message-State: AOJu0YzqRawKN1iSwn2XL6Epa4gZyLef/NU8MzKqAucMCzphBmk50EaM qtphSQE/7gW4rDyXbBGkqrVXxFY7NJpsJSd4mzl6YCag8+dk3kZeBy+kyYo1zgmin2KoxtiB+5k PExhTQV0mMoPMPIskH70ZkTn7L0Y= X-Gm-Gg: ASbGncsUvseIeSSJZm5+rMqHEu9B4hWfHCdemGk0UEmqOtoKSVHwAD20Mk9629ih/lp wJFsF9zJWOdnUD0vaeYLYWk05WmVCoKW4zBAu X-Google-Smtp-Source: AGHT+IH5ZJ7Muf+QifPcZ9yRtl/eL5w8xF6cJHBGXMA52LoMlce0cMD2y/Nhtma6eXU9vApBVOlge330omd4ApVXB2g= X-Received: by 2002:a05:6102:2ac6:b0:4b0:2542:d2d1 with SMTP id ada2fe7eead31-4b2cc378ae3mr47758940137.11.1736150352575; Sun, 05 Jan 2025 23:59:12 -0800 (PST) MIME-Version: 1.0 References: <3chredgnjcmccym2kczawfih226b4ac6co7p6z4jeofevrcosi@mrsxkx2x2c65> <20241120201313.t4wbhld4ktgielaf@erthalion.local> In-Reply-To: From: jian he Date: Mon, 6 Jan 2025 15:58:36 +0800 Message-ID: Subject: Re: Re: proposal: schema variables To: Pavel Stehule Cc: Dmitry Dolgov <9erthalion6@gmail.com>, Laurenz Albe , Erik Rijkers , Michael Paquier , Amit Kapila , DUVAL REMI , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000000b04b8062b050140" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000b04b8062b050140 Content-Type: text/plain; charset="UTF-8" comment out the changes in src/backend/utils/cache/plancache.c // /* process session variables */ // if (OidIsValid(parsetree->resultVariable)) // { // if (acquire) // LockDatabaseObject(VariableRelationId, parsetree->resultVariable, // 0, AccessShareLock); // else // UnlockDatabaseObject(VariableRelationId, parsetree->resultVariable, // 0, AccessShareLock); // } // else if (IsA(node, Param)) // { // Param *p = (Param *) node; // if (p->paramkind == PARAM_VARIABLE) // { // if (acquire) // LockDatabaseObject(VariableRelationId, p->paramvarid, // 0, AccessShareLock); // else // UnlockDatabaseObject(VariableRelationId, p->paramvarid, // 0, AccessShareLock); // } // } the regress tests are still successful, that means these code changes don't have related tests. SetSessionVariable(Oid varid, Datum value, bool isNull) { create_sessionvars_hashtables(); svar = (SVariable) hash_search(sessionvars, &varid, HASH_ENTER, &found); if (!found) setup_session_variable(svar, varid); /* if this fails, it won't change the stored value */ set_session_variable(svar, value, isNull); } after set_session_variable, we want to make sure that svar->is_valid is true, svar->value = value and svar->isnull= isNull. Based on this, I've simplified the function set_session_variable, refer v1-0001-minor-refactoring-set_session_variable.no-cfbot we use PlannerGlobal { Oid basenodeSessionVarid; Bitmapset *checkSelectPermVarids; } to solve the self-assigned corner case SELECT privilege. (let v1.a =v1.a; in this case, we need have SELECT priv for v1.a but let v1.a = 1, we don't need SELECT priv for v1.a). i found out these two field value(information) most case is the same as PlannerGlobal.sessionVariables; I came up with another solution, introduce a bool (Query.is_Variable_assigned), and get rid of PlannerGlobal.basenodeSessionVarid, PlannerGlobal.checkSelectPermVarids. not sure it make sense to you, refer v1-0002-refactoring-LET-statement-self-assign-privileg.no-cfbot --0000000000000b04b8062b050140 Content-Type: application/octet-stream; name="v1-0001-minor-refactoring-set_session_variable.no-cfbot" Content-Disposition: attachment; filename="v1-0001-minor-refactoring-set_session_variable.no-cfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5kr1hkl1 RnJvbSA5MWEwNTRjZmJlNGUzYWEzNGU1OTZjYTczNDM1ZThlZTQ1NDdlNTFiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgNiBKYW4gMjAyNSAxNToyOTowNyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEg MS8yXSBtaW5vciByZWZhY3RvcmluZyBzZXRfc2Vzc2lvbl92YXJpYWJsZQoKLS0tCiBzcmMvYmFj a2VuZC9jb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmMgfCAyOCArKysrKystLS0tLS0tLS0tLS0t LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmMKaW5kZXggMDBhMWYzNzFlMC4u OWUzZDEzYmNmZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2Vzc2lvbl92YXJp YWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Nlc3Npb25fdmFyaWFibGUuYwpAQCAt MjEwLDEzICsyMTAsMTIgQEAgc2V0dXBfc2Vzc2lvbl92YXJpYWJsZShTVmFyaWFibGUgc3Zhciwg T2lkIHZhcmlkKQogc3RhdGljIHZvaWQKIHNldF9zZXNzaW9uX3ZhcmlhYmxlKFNWYXJpYWJsZSBz dmFyLCBEYXR1bSB2YWx1ZSwgYm9vbCBpc251bGwpCiB7Ci0JRGF0dW0JCW5ld3ZhbDsKLQlTVmFy aWFibGVEYXRhIGxvY3N2YXIsCi0JCQkgICAqX3N2YXI7Ci0KIAlBc3NlcnQoc3Zhcik7CiAJQXNz ZXJ0KCFpc251bGwgfHwgdmFsdWUgPT0gKERhdHVtKSAwKTsKIAorCS8qIGZyZWUgc3Zhci0+dmFs dWUgYW5kIHNldCBzdmFyLT5pc251bGwgdG8gdHJ1ZSAqLworCWZyZWVfc2Vzc2lvbl92YXJpYWJs ZV92YWx1ZShzdmFyKTsKKwogCS8qCiAJICogVXNlIHR5cGJ5dmFsLCB0eXBieWxlbiBmcm9tIHNl c3Npb24gdmFyaWFibGUgb25seSB3aGVuIHRoZXkgYXJlCiAJICogdHJ1c3R3b3J0aHkgKHRoZSBp bnZhbGlkYXRpb24gbWVzc2FnZSB3YXMgbm90IGFjY2VwdGVkIGZvciB0aGlzCkBAIC0yMjYsMzcg KzIyNSwyMiBAQCBzZXRfc2Vzc2lvbl92YXJpYWJsZShTVmFyaWFibGUgc3ZhciwgRGF0dW0gdmFs dWUsIGJvb2wgaXNudWxsKQogCSAqIHRoYXQgbm8gZXJyb3IgY2FuIGJlIHRocm93bi4KIAkgKi8K IAlpZiAoIXN2YXItPmlzX3ZhbGlkKQotCXsKLQkJc2V0dXBfc2Vzc2lvbl92YXJpYWJsZSgmbG9j c3Zhciwgc3Zhci0+dmFyaWQpOwotCQlfc3ZhciA9ICZsb2NzdmFyOwotCX0KLQllbHNlCi0JCV9z dmFyID0gc3ZhcjsKKwkJc2V0dXBfc2Vzc2lvbl92YXJpYWJsZShzdmFyLCBzdmFyLT52YXJpZCk7 CiAKIAlpZiAoIWlzbnVsbCkKIAl7CiAJCU1lbW9yeUNvbnRleHQgb2xkY3h0ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKFNWYXJpYWJsZU1lbW9yeUNvbnRleHQpOwogCi0JCW5ld3ZhbCA9IGRhdHVt Q29weSh2YWx1ZSwgX3N2YXItPnR5cGJ5dmFsLCBfc3Zhci0+dHlwbGVuKTsKKwkJc3Zhci0+dmFs dWUgPSBkYXR1bUNvcHkodmFsdWUsIHN2YXItPnR5cGJ5dmFsLCBzdmFyLT50eXBsZW4pOworCQlz dmFyLT5pc251bGwgPSBpc251bGw7CiAKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7 CiAJfQotCWVsc2UKLQkJbmV3dmFsID0gdmFsdWU7Ci0KLQlmcmVlX3Nlc3Npb25fdmFyaWFibGVf dmFsdWUoc3Zhcik7CiAKIAllbG9nKERFQlVHMSwgInNlc3Npb24gdmFyaWFibGUgXCIlcy4lc1wi IChvaWQ6JXUpIGhhcyBuZXcgdmFsdWUiLAogCQkgZ2V0X25hbWVzcGFjZV9uYW1lKGdldF9zZXNz aW9uX3ZhcmlhYmxlX25hbWVzcGFjZShzdmFyLT52YXJpZCkpLAogCQkgZ2V0X3Nlc3Npb25fdmFy aWFibGVfbmFtZShzdmFyLT52YXJpZCksCiAJCSBzdmFyLT52YXJpZCk7Ci0KLQkvKiBubyBtb3Jl IGVycm9yIGV4cGVjdGVkLCBzbyB3ZSBjYW4gb3ZlcndyaXRlIHRoZSBvbGQgdmFyaWFibGUgbm93 ICovCi0JaWYgKHN2YXIgIT0gX3N2YXIpCi0JCW1lbWNweShzdmFyLCBfc3Zhciwgc2l6ZW9mKFNW YXJpYWJsZURhdGEpKTsKLQotCXN2YXItPnZhbHVlID0gbmV3dmFsOwotCXN2YXItPmlzbnVsbCA9 IGlzbnVsbDsKIH0KIAogLyoKLS0gCjIuMzQuMQoK --0000000000000b04b8062b050140 Content-Type: application/octet-stream; name="v1-0002-refactoring-LET-statement-self-assign-privileg.no-cfbot" Content-Disposition: attachment; filename="v1-0002-refactoring-LET-statement-self-assign-privileg.no-cfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5kr1hkd0 RnJvbSA1MmIyMzhlZGMyMzVkM2YyMDdiZTY4NDBkYTUxM2E3OTY4MmQ4ZjExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgNiBKYW4gMjAyNSAxNTo0NTowOSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEg Mi8yXSByZWZhY3RvcmluZyBMRVQgc3RhdGVtZW50IHNlbGYgYXNzaWduIHByaXZpbGVnZSBjaGVj awoKLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgfCAgOSArKysrLS0t CiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgfCAzNyArKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgfCAg OSArKysrKysrCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAgICAgfCAgNiAtLS0t LQogNCBmaWxlcyBjaGFuZ2VkLCA0MSBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggMTFmNzM2YjQzNy4uYTIxZDhlNDhj NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBi L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtMzM0LDggKzMzNCw2IEBA IHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcs IGludCBjdXJzb3JPcHRpb25zLAogCWdsb2ItPnRyYW5zaWVudFBsYW4gPSBmYWxzZTsKIAlnbG9i LT5kZXBlbmRzT25Sb2xlID0gZmFsc2U7CiAJZ2xvYi0+c2Vzc2lvblZhcmlhYmxlcyA9IE5JTDsK LQlnbG9iLT5iYXNlbm9kZVNlc3Npb25WYXJpZCA9IEludmFsaWRPaWQ7Ci0JZ2xvYi0+Y2hlY2tT ZWxlY3RQZXJtVmFyaWRzID0gTlVMTDsKIAogCS8qCiAJICogQXNzZXNzIHdoZXRoZXIgaXQncyBm ZWFzaWJsZSB0byB1c2UgcGFyYWxsZWwgbW9kZSBmb3IgdGhpcyBxdWVyeS4gV2UKQEAgLTU3OCw4 ICs1NzYsMTEgQEAgc3RhbmRhcmRfcGxhbm5lcihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1 ZXJ5X3N0cmluZywgaW50IGN1cnNvck9wdGlvbnMsCiAJICogZm9yIGFzc2lnbmVtbnQgaW5kaXJl Y3Rpb24gc2hvdWxkIGJlIGV4Y2x1ZGVkIGZyb20gcGVybWlzc2lvbgogCSAqIGNoZWNrLgogCSAq LwotCWlmICghYm1zX2lzX21lbWJlcihnbG9iLT5iYXNlbm9kZVNlc3Npb25WYXJpZCwgZ2xvYi0+ Y2hlY2tTZWxlY3RQZXJtVmFyaWRzKSkKLQkJcmVzdWx0LT5leGNsU2VsZWN0UGVybUNoZWNrVmFy aWQgPSBnbG9iLT5iYXNlbm9kZVNlc3Npb25WYXJpZDsKKwlpZiAoT2lkSXNWYWxpZChyb290LT5w YXJzZS0+cmVzdWx0VmFyaWFibGUpICYmCisJCSFyb290LT5wYXJzZS0+aXNfVmFyaWFibGVfYXNz aWduZWQpCisJCXJlc3VsdC0+ZXhjbFNlbGVjdFBlcm1DaGVja1ZhcmlkID0gcm9vdC0+cGFyc2Ut PnJlc3VsdFZhcmlhYmxlOworCWVsc2UKKwkJcmVzdWx0LT5leGNsU2VsZWN0UGVybUNoZWNrVmFy aWQgPSBJbnZhbGlkT2lkOwogCiAJcmVzdWx0LT5zdG10X2xvY2F0aW9uID0gcGFyc2UtPnN0bXRf bG9jYXRpb247CiAJcmVzdWx0LT5zdG10X2xlbiA9IHBhcnNlLT5zdG10X2xlbjsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3NldHJlZnMuYwppbmRleCA5NWU4NTM4MTE3Li5lNjI3MTg1Mzg4IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCkBAIC0yMTcxLDE4ICsyMTcxLDM1IEBAIGZp eF9wYXJhbV9ub2RlKFBsYW5uZXJJbmZvICpyb290LCBQYXJhbSAqcCkKIAkJICogaW5kaXJlY3Rp b24uIEluIHRoaXMgY2FzZSB3ZSBtdXN0IG5vdCBkbyBTRUxFQ1QgcGVybWlzc2lvbiBjaGVjay4K IAkJICogSW4gb3RoZXIgY2FzZXMgd2UgaGF2ZSBkbyBTRUxFQ1QgcGVybWlzc2lvbiBjaGVjay4K IAkJICovCi0JCWlmIChwLT5wYXJhbWJhc2Vub2RlKQorCQlpZiAoIXAtPnBhcmFtYmFzZW5vZGUp CiAJCXsKLQkJCS8qIHRoZSB2YXJpYWJsZSBjYW4gYmUgdXNlZCBvbmx5IG9uY2UgYXMgYmFzZSBu b2RlICovCi0JCQlBc3NlcnQoIShPaWRJc1ZhbGlkKHJvb3QtPmdsb2ItPmJhc2Vub2RlU2Vzc2lv blZhcmlkKSkpOworCQkJYm9vbAkJZXhpc3RzID0gZmFsc2U7CisJCQlQbGFubmVySW5mbyAqdGVt cF9yb290CT0gTlVMTDsKKwkJCXRlbXBfcm9vdCA9IHJvb3Q7CisJCQlkbworCQkJeworCQkJCWlm ICh0ZW1wX3Jvb3QtPnBhcnNlICYmCisJCQkJCU9pZElzVmFsaWQodGVtcF9yb290LT5wYXJzZS0+ cmVzdWx0VmFyaWFibGUpICYmCisJCQkJCShwLT5wYXJhbXZhcmlkID09IHRlbXBfcm9vdC0+cGFy c2UtPnJlc3VsdFZhcmlhYmxlKSkKKwkJCQl7CisJCQkJCWV4aXN0cyA9IHRydWU7CisJCQkJCWJy ZWFrOworCQkJCX0KKwkJCQl0ZW1wX3Jvb3QgPSB0ZW1wX3Jvb3QtPnBhcmVudF9yb290OworCQkJ fQorCQkJd2hpbGUgKHRlbXBfcm9vdCAhPSBOVUxMKTsKIAotCQkJcm9vdC0+Z2xvYi0+YmFzZW5v ZGVTZXNzaW9uVmFyaWQgPSBwLT5wYXJhbXZhcmlkOwotCQl9Ci0JCWVsc2UKLQkJewotCQkJcm9v dC0+Z2xvYi0+Y2hlY2tTZWxlY3RQZXJtVmFyaWRzID0KLQkJCQkJCQkgIGJtc19hZGRfbWVtYmVy KHJvb3QtPmdsb2ItPmNoZWNrU2VsZWN0UGVybVZhcmlkcywKLQkJCQkJCQkJCQkJIHAtPnBhcmFt dmFyaWQpOworCQkJaWYgKGV4aXN0cykKKwkJCXsKKwkJCQl0ZW1wX3Jvb3QgPSByb290OworCQkJ CWRvCisJCQkJeworCQkJCQlpZiAodGVtcF9yb290LT5wYXJzZSkKKwkJCQkJCXRlbXBfcm9vdC0+ cGFyc2UtPmlzX1ZhcmlhYmxlX2Fzc2lnbmVkID0gdHJ1ZTsKKwkJCQkJdGVtcF9yb290ID0gdGVt cF9yb290LT5wYXJlbnRfcm9vdDsKKwkJCQl9CisJCQkJd2hpbGUgKHRlbXBfcm9vdCAhPSBOVUxM KTsKKwkJCX0KIAkJfQogCiAJCXJldHVybiAoTm9kZSAqKSBwOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5o CmluZGV4IGI0MTdiNTZjMmEuLjY1M2ZhNTIxMTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAg LTE0NSw2ICsxNDUsMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnkKIAkvKiB0YXJnZXQgdmFyaWFi bGUgb2YgTEVUIHN0YXRlbWVudCAqLwogCU9pZAkJCXJlc3VsdFZhcmlhYmxlOwogCisJLyogdHJ1 ZSBpZiBzZXNzaW9uIHZhcmlhYmxlcyBpcyBpbiBib3RoIHNpZGVzIG9mIExFVCBzdGF0ZW1lbnQs IHRoaXMgZmxhZyBpcworCSAqIHNldCByZWN1cnNpdmVseSBmb3IgcGFyZW50X3Jvb3QuIGZvciBM RVQgc3RhdGVtZW50LCB3aGVuIHdlIGFzc2lnbmVkCisJICogdmFsdWUgdG8gYSB2YXJpYWJsZSwg d2UgZG9uJ3QgbmVlZCBjaGVjayB1c2VycyBTRUxFQ1QgcHJpdmlsZWRnZSBmb3IgdGhhdAorCSAq IHZhcmlhYmxlLCBidXQgaWYgdmFyaWFibGUgaXMgaW4gYm90aCBzaWRlIG9mIExFVCBzdGF0ZW1l bnQsIHRoZW4gd2UgZG8KKwkgKiBuZWVkIGNoZWNrIHRoZSBzZXNzaW9uIHZhcmlhYmxlIFNFTEVD VCBwcml2aWxlZGdlIGFnYWluIGN1cnJlbnQgdXNlci4KKwkgKiBmb3IgZXhhbXBsZSBMRVQgdjEu YSA9IHYxLmEuCisJKi8KKwlib29sCQlpc19WYXJpYWJsZV9hc3NpZ25lZDsKKwogCS8qIGhhcyBh Z2dyZWdhdGVzIGluIHRsaXN0IG9yIGhhdmluZ1F1YWwgKi8KIAlib29sCQloYXNBZ2dzIHBnX25v ZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAkvKiBoYXMgd2luZG93IGZ1bmN0aW9ucyBp biB0bGlzdCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggYi9z cmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAppbmRleCBmMWE5M2Q1YjM0Li44ODBiYjJhMjZm IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAorKysgYi9zcmMvaW5j bHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtMTY2LDEyICsxNjYsNiBAQCB0eXBlZGVmIHN0cnVj dCBQbGFubmVyR2xvYmFsCiAKIAkvKiBsaXN0IG9mIHVzZWQgc2Vzc2lvbiB2YXJpYWJsZXMgKi8K IAlMaXN0CSAgICpzZXNzaW9uVmFyaWFibGVzOwotCi0JLyogb2lkIG9mIHNlc3Npb24gdmFyaWFi bGUgdXNlZCBsaWtlIGJhc2Ugbm9kZSBmb3IgYXNzaWdubWVudCBpbmRpcmVjdGlvbiAqLwotCU9p ZAkJCWJhc2Vub2RlU2Vzc2lvblZhcmlkOwotCi0JLyogc2V0IG9mIHNlc3Npb24gdmFyaWFibGVz IHdoZXJlIGV4ZWN1dGUgcGVybWlzc2lvbiBjaGVjayBpcyByZXF1aXJlZCAqLwotCUJpdG1hcHNl dCAqY2hlY2tTZWxlY3RQZXJtVmFyaWRzOwogfSBQbGFubmVyR2xvYmFsOwogCiAvKiBtYWNybyBm b3IgZmV0Y2hpbmcgdGhlIFBsYW4gYXNzb2NpYXRlZCB3aXRoIGEgU3ViUGxhbiBub2RlICovCi0t IAoyLjM0LjEKCg== --0000000000000b04b8062b050140--