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.96) (envelope-from ) id 1w7t7f-005nnE-0i for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Apr 2026 10:48:31 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w7t7d-00Gp9n-29 for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Apr 2026 10:48:30 +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.96) (envelope-from ) id 1w7t7d-00Gp9e-0k for pgsql-hackers@lists.postgresql.org; Wed, 01 Apr 2026 10:48:29 +0000 Received: from mail-lj1-x22a.google.com ([2a00:1450:4864:20::22a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w7t7a-00000002L5K-3N2T for pgsql-hackers@lists.postgresql.org; Wed, 01 Apr 2026 10:48:29 +0000 Received: by mail-lj1-x22a.google.com with SMTP id 38308e7fff4ca-38ad26e3992so52165141fa.1 for ; Wed, 01 Apr 2026 03:48:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775040501; cv=none; d=google.com; s=arc-20240605; b=DlouR9RIXDZgKw/af15QImYNnkYrve2zPHU3ngFzdmxjcevKSIN5vium5Sr743zm4+ CZhuIzDjQqfQIRufk5DDkBRSfhzkvGEqOLLz0Ooe33yDmPJ4eiyScdGbU7ayaPYOiNZe TnQ1OW8KJ5rg+pN3sBg8MmG4is7fkDrHh3knG1XF3t3HX3Z251OVKya2wjahMMfn/CM1 GHNmnMVBN8md3vNlyZlDp+knRLYIKz+ewUdFDb31vfTgSQ5Asnk46TEpe/rWRlEtQ96P YhtcILMFVNOS4BWX9SlK+f+4XHs+JoV86hSjzLWWsoGqGxk0U/x7NfmLlW2Aovpd1N3n NJ+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=Dffo8octCxVrBxe94fKOx/WSWF3ZV1FSXRLzZEXhDtA=; fh=dxJXJbLzq9Nah1LUdsj4QTuQ3JoDScd0wp1YHY64NXM=; b=QimulYLg2uxEYygD7voMa73hliKTwrqoTBTMeJ0JwRIR0yu4NFsujPNYAaVyMiuMdj ocoeM6P2IZW8m5baoJgV5BvSf/PdRFXx82G23XwkW8br2nWz4rO0tgZivCuvnBcdmwGV QZNd1/qcz6kpmRzEQoPd26r2eLwPMqXeRFXvbturt2gYI1lyCU66qe3apJcjIyTrCFP7 l4fFmLmQLnMs14HzrZerytluMZsfv+GLE/mnKGkn2fd5eQtE48LZKv9jNcoJ+RNdD3aR ZfE7PbhXGELfY3ZPX7aftj+WkaX6u/owIEzLdyq1S7JCVUEtHxOoVvfZ3UmAR++pY4jg ztjw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775040501; x=1775645301; darn=lists.postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=Dffo8octCxVrBxe94fKOx/WSWF3ZV1FSXRLzZEXhDtA=; b=Veb7WWheF2i6oScSJTDMhTxCjdx+7rJ+yAof1CYNd2P5Xdp7eimqAjR84kpJq8dgVD QyPH/HiQ5TO0N5bXQsY22U2t4aoSVydItJbViLt5cOLnTVSzRibMZZZnhG7QguGAZarp TqUQkGI/kgu+svYWxyqk53dHBYW9IoGirizmorJfAGpH+BcZf8hH+HzPJDkl3SvO/NOt 7WPfLZdgif7t+beQ6WRmy3EIZBuTwseY+XOaBrIsWAoOZnKoeRJZEYcMqltddM/XalqB O/xArEjF+PgduiSNIUKFhjvk10i1zj6bE9hPaEzE4hA6lp7ZrSiwIzaKplqYiuHn3Usa H/uw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775040501; x=1775645301; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Dffo8octCxVrBxe94fKOx/WSWF3ZV1FSXRLzZEXhDtA=; b=Xk/htraRAgiNSlKC7c48EIdeukprcQjkGf2KqniN0zCSmC49SjiJ+uYhb/ui+h2G7M h6ck4o0EdV/h+jYCkKrIBJrdFiWbs/5WKHlPmhs0rnelVGLfz9O8xiClrzw5fWBQB7VQ v5I/53SsbcmMKVvWjecgbR+jCDKE0gQEG6X+IlUegR5X+ca5V0CL+h8HHpMeqj5ic93S 1x6b6oTlCSxd6RD1HfgofQ8yfVxbhG5sWlWY+rLO7cy+ZxXiopgKu73BGcGWKXfsFBZa zho/ZYTVq1tqaBYDTtmUqY6KcoGw4xz22HftVIrlUXn+D6dFQvVOOzsUse7UhCo9aTW5 qlzQ== X-Gm-Message-State: AOJu0YwA3VkPxE3AlqgDlCRwLWotBbmVZA3wW6XAkJdoxXb9C3fAE7zZ Z/7lIRPxerMZQKRKuZosj/VB4PY+erqebX1s9OcBatUJ6R3bKpAsTPN4plv3EyEwmgwatj0/RVP DJptbCyrs8hpNuoKtdDsg3P9ERtfoOOs4yFJ/ X-Gm-Gg: ATEYQzyXr7WoHpJrQnEBg7bDUKO9t7Ck9iQqLdr1wOKrmC/dUQw/1HM9stk2z9FDRgp 5Ri5tybnte0xyAg/QQkTF3+w3NoAorr2mlbkKe9u56HdIEUQ4YnnnTXUaRYZ/XVJOherLnjtRy3 q3/dsFUIABtyJ3i2ayEEEOGyJZxFd+vnUJFQNuvaxKaoCYcmIOk+YJ3l9lAfi1BSzP/HNsiUUKq MwQJ2rACZNg4UxPTLwYSGBcuI0aL49bFPOA9QWEBFKHewo3uEIj1km85TX9lrugssmWUR7cc9cR E33DrZN1CPB2wsbN+LEF2Js1hDGWZ9OGU3hBgW5mNnZGWvgbQeka6gF68Kdno7VVY1xXVWng91f rxNsq X-Received: by 2002:a05:651c:1117:20b0:389:fbe6:3321 with SMTP id 38308e7fff4ca-38cc30e8ebfmr8777031fa.33.1775040500501; Wed, 01 Apr 2026 03:48:20 -0700 (PDT) MIME-Version: 1.0 From: Matthias van de Meent Date: Wed, 1 Apr 2026 12:48:08 +0200 X-Gm-Features: AQROBzDokFdGh8i9EnlKOiIKRrgHhwoz2beygRN0Mc9iAcZSRwQxhkV3kyZcjP8 Message-ID: Subject: Online PostgreSQL version() updates To: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000007ea9c5064e63d23d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007ea9c5064e63d23d Content-Type: text/plain; charset="UTF-8" Hi, March has gone and passed, and the feature freeze for 19 is on the horizon; which also means it's time for users to start thinking about version updates. One of the greatest complaints people have about PostgreSQL is that they can't update its version() without at least some downtime being involved, either due to failovers or because their postmaster needs to be restarted. Updating to a new major version() is often time-consuming, complicated, and may involve moving terabytes of data; sometimes with no practical methods to avoid this. Until now. Attached is a patch that allows superusers to update the version() of their running system with a simple SQL call: SELECT pg_update_version(version_num, 'version_short', 'the full version() outout'). Running backends will automatically get updated without impacting their active workloads, and new backends will immediately notice the new version(). Local testing of the patch indicates no significant performance loss in normal workloads, with only a small amount of shared memory being spent on the coordination of the update process. Enjoy, Matthias Example usage: $ SELECT pg_update_version(190000, '19beta1', 'PostgreSQL 19beta1 on aarch64-darwin, compiled by clang-17.0.0, 64-bit'); $ SHOW server_version; '19beta1' $ SHOW server_version_num; '190000' $ SELECT version(); 'PostgreSQL 19beta1 on aarch64-darwin, compiled by clang-17.0.0, 64-bit' $ \c psql (19devel, server 19beta1) You are now connected to database "postgres" as user "posgres". $ SELECT pg_update_version(40100, '4.1', 'PostgreSQL 4.1 compatibility edition'); $ SHOW server_version; '4.1' $ SHOW server_version_num; '40100' $ SELECT version(); 'PostgreSQL 4.1 compatibility edition' $ \c psql (19devel, server 4.1) WARNING: psql major version 19, server major version 4.1. Some psql features might not work. You are now connected to database "postgres" as user "posgres". --0000000000007ea9c5064e63d23d Content-Type: application/octet-stream; name="v2026-04-0001-Online-PostgreSQL-version-updates.patch" Content-Disposition: attachment; filename="v2026-04-0001-Online-PostgreSQL-version-updates.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnfwc4nu0 RnJvbSAyNTU2MWQ1MGFiZDIxOWNhOGU0M2NkYzYyYmZmYWYwMTk1ZDRkNDUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXR0aGlhcyB2YW4gZGUgTWVlbnQgPGJvZWtld3VybStwb3N0 Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IFR1ZSwgMzEgTWFyIDIwMjYgMjM6MzU6MTIgKzAyMDAKU3Vi amVjdDogW1BBVENIIHYyMDI2LTA0XSBPbmxpbmUgUG9zdGdyZVNRTCB2ZXJzaW9uIHVwZGF0ZXMK Ck1hbnkgdXNlcnMgaGF2ZSBhc2tlZCB0byBhbGxvdyB0aGVtIHRvIHVwZGF0ZSB0aGVpciBQb3N0 Z3JlU1FMCnZlcnNpb24gdG8gYSBuZXdlciBvbmUgd2l0aG91dCBkb3dudGltZS4gIEF0IGZpcnN0 IGdsYW5jZSwgb25lCndvdWxkIHRoaW5rIHRoYXQgdGhhdCBpcyBhIGh1Z2VseSBjb21wbGljYXRl ZCBwcm9jZXNzLCBidXQKdGhlIG9wcG9zaXRlIGlzIHRydWU6ICBUaGVyZSBhcmUgdmVyeSBmZXcg cGxhY2VzIHRoYXQgYWN0dWFsbHkKZGVwZW5kIG9uIHRoZSB2ZXJzaW9uLgoKVGhpcyBpcyBhIHBh dGNoIHdpdGggbWluaW1hbCBsb2NraW5nLCBhbmQgYmFja2VuZHMgdGhhdCBkb24ndAp3YW50IHRv IGtub3cgYWJvdXQgUG9zdGdyZVNRTCB2ZXJzaW9ucyB3b24ndCBiZSBpbXBhY3RlZCBieQp1cGdy YWRlcyBlaXRoZXIuCi0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jICAgICAgICAg ICAgICAgIHwgICAyICsKIC4uLi91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50X25hbWVzLnR4dCAg ICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvdmVyc2lvbi5jICAgICAgICAgICAg ICAgfCAxMzMgKysrKysrKysrKysrKysrKystCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu ZGF0ICAgICAgICAgICAgICAgfCAgIDkgKy0KIHNyYy9pbmNsdWRlL21pc2NhZG1pbi5oICAgICAg ICAgICAgICAgICAgICAgICB8ICAgNSArCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2x3bG9ja2xpc3Qu aCAgICAgICAgICAgICAgfCAgIDEgKwogNiBmaWxlcyBjaGFuZ2VkLCAxNDggaW5zZXJ0aW9ucygr KSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9p cGNpLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKaW5kZXggZDY5MmQ0MTk4NDYu LjBlODhkMDQyYWY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMK KysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCkBAIC0xNDIsNiArMTQyLDcgQEAg Q2FsY3VsYXRlU2htZW1TaXplKHZvaWQpCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIEFpb1NobWVt U2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgV2FpdExTTlNobWVtU2l6ZSgpKTsKIAlz aXplID0gYWRkX3NpemUoc2l6ZSwgTG9naWNhbERlY29kaW5nQ3RsU2htZW1TaXplKCkpOworCXNp emUgPSBhZGRfc2l6ZShzaXplLCBWZXJzaW9uQ3RsU2htZW1TaXplKCkpOwogCiAJLyogaW5jbHVk ZSBhZGRpdGlvbmFsIHJlcXVlc3RlZCBzaG1lbSBmcm9tIHByZWxvYWQgbGlicmFyaWVzICovCiAJ c2l6ZSA9IGFkZF9zaXplKHNpemUsIHRvdGFsX2FkZGluX3JlcXVlc3QpOwpAQCAtMzIzLDYgKzMy NCw3IEBAIENyZWF0ZU9yQXR0YWNoU2htZW1TdHJ1Y3RzKHZvaWQpCiAJQWlvU2htZW1Jbml0KCk7 CiAJV2FpdExTTlNobWVtSW5pdCgpOwogCUxvZ2ljYWxEZWNvZGluZ0N0bFNobWVtSW5pdCgpOwor CVZlcnNpb25DdGxTaG1lbUluaXQoKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0IGIvc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvd2FpdF9ldmVudF9uYW1lcy50eHQKaW5kZXggNmJlODBkMmRhYWQuLjYyNDZmMDFh ZjE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50X25h bWVzLnR4dAorKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50X25hbWVz LnR4dApAQCAtNDEyLDYgKzQxMiw3IEBAIFhhY3RTTFJVCSJXYWl0aW5nIHRvIGFjY2VzcyB0aGUg dHJhbnNhY3Rpb24gc3RhdHVzIFNMUlUgY2FjaGUuIgogUGFyYWxsZWxWYWN1dW1EU0EJIldhaXRp bmcgZm9yIHBhcmFsbGVsIHZhY3V1bSBkeW5hbWljIHNoYXJlZCBtZW1vcnkgYWxsb2NhdGlvbi4i CiBBaW9VcmluZ0NvbXBsZXRpb24JIldhaXRpbmcgZm9yIGFub3RoZXIgcHJvY2VzcyB0byBjb21w bGV0ZSBJTyB2aWEgaW9fdXJpbmcuIgogU2htZW1JbmRleAkiV2FpdGluZyB0byBmaW5kIG9yIGFs bG9jYXRlIHNwYWNlIGluIHNoYXJlZCBtZW1vcnkuIgorVmVyc2lvbkNvbnRyb2wJIldhaXRpbmcg Zm9yIHRoZSBQb3N0Z3JlU1FMIHZlcnNpb24gY29udHJvbCBsb2NrLiIKIAogIyBObyAiQUJJX2Nv bXBhdGliaWxpdHkiIHJlZ2lvbiBoZXJlIGFzIFdhaXRFdmVudExXTG9jayBoYXMgaXRzIG93biBD IGNvZGUuCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92ZXJzaW9uLmMgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvdmVyc2lvbi5jCmluZGV4IGVjMzg0M2NhYjk2Li45MWQ4Zjkx NTExOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZlcnNpb24uYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvdmVyc2lvbi5jCkBAIC0xNCwxMSArMTQsMTQyIEBACiAKICNp bmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAi cG9ydC9hdG9taWNzLmgiCisjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKKyNpbmNsdWRlICJz dG9yYWdlL3NobWVtLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1 dGlscy9ndWNfdGFibGVzLmgiCiAKIAorLyoKKyAqIFRoZSB2ZXJzaW9uIHRoYXQgdGhpcyBjbHVz dGVyIGV4cG9zZXMgdW5kZXIgYFNFTEVDVCB2ZXJzaW9uKClgLgorICovCit0eXBlZGVmIHN0cnVj dCBQZ1ZlcnNpb25Db250cm9sCit7CisJTFdMb2NrCQlsb2NrOworCWludAkJCXNpemU7CisJaW50 CQkJdmVyc2lvbl9udW07CisJY2hhcgkJdmVyc2lvbl9zaG9ydFtQR19DQUNIRV9MSU5FX1NJWkVd OworCWNoYXIJCXZlcnNpb25bRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKK30gUGdWZXJzaW9uQ29u dHJvbDsKKworc3RhdGljIFBnVmVyc2lvbkNvbnRyb2wgKnZlcnNpb25DdGw7CisKK3N0YXRpYyBz dHJ1Y3QgY29uZmlnX2dlbmVyaWMgKlZFUlNJT05fR1VDOworc3RhdGljIHN0cnVjdCBjb25maWdf Z2VuZXJpYyAqVkVSU0lPTl9OVU1fR1VDOworCisjZGVmaW5lIEdFTkVSQVRJT05fSVNfTE9DS0VE KGdlbmVyYXRpb24pICgoZ2VuZXJhdGlvbiAmIDEpID09IDEpCisKIERhdHVtCiBwZ3NxbF92ZXJz aW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiB7Ci0JUEdfUkVUVVJOX1RFWFRfUChjc3RyaW5nX3RvX3Rl eHQoUEdfVkVSU0lPTl9TVFIpKTsKKwljaGFyCSAgICp2ZXJzaW9uOworCisJdmVyc2lvbiA9IEdl dEN1cnJlbnRWZXJzaW9uU3RyKCk7CisKKwlQR19SRVRVUk5fVEVYVF9QKGNzdHJpbmdfdG9fdGV4 dCh2ZXJzaW9uKSk7Cit9CisKK0RhdHVtCitwZ3NxbF91cGRhdGVfdmVyc2lvbihQR19GVU5DVElP Tl9BUkdTKQoreworCWludAkJCXZlcnNpb25faW50OworCXRleHQJICAgKnZlcnNpb25fc2hvcnQ7 CisJdGV4dAkgICAqdmVyc2lvbl9zdHI7CisKKwlpZiAoUEdfQVJHSVNOVUxMKDApIHx8IFBHX0FS R0lTTlVMTCgxKSB8fCBQR19BUkdJU05VTEwoMikpCisJCWVyZXBvcnQoRVJST1IsIGVycmNvZGUo RVJSQ09ERV9OVUxMX1ZBTFVFX05PVF9BTExPV0VEKSk7CisKKwl2ZXJzaW9uX2ludCA9IFBHX0dF VEFSR19JTlQzMigwKTsKKwl2ZXJzaW9uX3Nob3J0ID0gUEdfR0VUQVJHX1RFWFRfUCgxKTsKKwl2 ZXJzaW9uX3N0ciA9IFBHX0dFVEFSR19URVhUX1AoMik7CisKKwlTZXRDdXJyZW50VmVyc2lvbih2 ZXJzaW9uX2ludCwgdmVyc2lvbl9zaG9ydCwgdmVyc2lvbl9zdHIpOworCisJUEdfUkVUVVJOX1RF WFRfUCh2ZXJzaW9uX3Nob3J0KTsKK30KKwordm9pZAorU2V0Q3VycmVudFZlcnNpb24oaW50IHZl cnNpb25fbnVtLCB0ZXh0ICp2ZXJzaW9uX3Nob3J0LCB0ZXh0ICp2ZXJzaW9uX3N0cikKK3sKKwlT aXplCQluZXdsZW4gPSBWQVJTSVpFX0FOWV9FWEhEUih2ZXJzaW9uX3N0cik7CisJU2l6ZQkJc2hv cnRsZW4gPSBWQVJTSVpFX0FOWV9FWEhEUih2ZXJzaW9uX3Nob3J0KTsKKworCWlmICghc3VwZXJ1 c2VyKCkpCisJCWVyZXBvcnQoRVJST1IsIGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJ VklMRUdFKSwKKwkJCQllcnJtc2coIkZvcmJpZGRlbiBvcGVyYXRpb24iKSk7CisKKwlpZiAobmV3 bGVuID49IHZlcnNpb25DdGwtPnNpemUpCisJCWVyZXBvcnQoRVJST1IsIGVycmNvZGUoRVJSQ09E RV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAorCQkJCWVycm1zZygiVmVyc2lvbiBzdHJp bmcgaXMgdG9vIGxvbmciKSwKKwkJCQllcnJkZXRhaWwoIlZlcnNpb25zIHVwIHRvICVkIGFyZSBz dXBwb3J0ZWQiLCB2ZXJzaW9uQ3RsLT5zaXplKSk7CisJaWYgKHNob3J0bGVuID49IFBHX0NBQ0hF X0xJTkVfU0laRSkKKwkJZXJlcG9ydChFUlJPUiwgZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVY VF9SRVBSRVNFTlRBVElPTiksCisJCQkJZXJybXNnKCJWZXJzaW9uIHN0cmluZyBpcyB0b28gbG9u ZyIpLAorCQkJCWVycmRldGFpbCgiVmVyc2lvbnMgdXAgdG8gJWQgYXJlIHN1cHBvcnRlZCIsIHZl cnNpb25DdGwtPnNpemUpKTsKKworCUxXTG9ja0FjcXVpcmUoJnZlcnNpb25DdGwtPmxvY2ssIExX X0VYQ0xVU0lWRSk7CisJdmVyc2lvbkN0bC0+dmVyc2lvbl9udW0gPSB2ZXJzaW9uX251bTsKKwlt ZW1jcHkodmVyc2lvbkN0bC0+dmVyc2lvbl9zaG9ydCwgVkFSREFUQV9BTlkodmVyc2lvbl9zaG9y dCksIHNob3J0bGVuKTsKKwl2ZXJzaW9uQ3RsLT52ZXJzaW9uX3Nob3J0W3Nob3J0bGVuXSA9IDA7 CisJbWVtY3B5KHZlcnNpb25DdGwtPnZlcnNpb24sIFZBUkRBVEFfQU5ZKHZlcnNpb25fc3RyKSwg bmV3bGVuKTsKKwl2ZXJzaW9uQ3RsLT52ZXJzaW9uW25ld2xlbl0gPSAwOworCUxXTG9ja1JlbGVh c2UoJnZlcnNpb25DdGwtPmxvY2spOworfQorCitjaGFyICoKK0dldEN1cnJlbnRWZXJzaW9uU3Ry KHZvaWQpCit7CisJY2hhcgkgICAqdmVyc2lvbiA9IHBhbGxvYzAodmVyc2lvbkN0bC0+c2l6ZSAr IDEpOworCisJTFdMb2NrQWNxdWlyZSgmdmVyc2lvbkN0bC0+bG9jaywgTFdfU0hBUkVEKTsKKwlz dHJuY3B5KHZlcnNpb24sIHZlcnNpb25DdGwtPnZlcnNpb24sIHZlcnNpb25DdGwtPnNpemUpOwor CUxXTG9ja1JlbGVhc2UoJnZlcnNpb25DdGwtPmxvY2spOworCisJcmV0dXJuIHZlcnNpb247Cit9 CisKK1NpemUKK1ZlcnNpb25DdGxTaG1lbVNpemUodm9pZCkKK3sKKwlTaXplCXNpemUgPSBNQVhB TElHTihvZmZzZXRvZihQZ1ZlcnNpb25Db250cm9sLCB2ZXJzaW9uKSk7CisKKwkvKiBrZWVwIHNv bWUgbWFyZ2luKi8KKwlzaXplICs9IG11bF9zaXplKE1BWEFMSUdOKHN0cmxlbihQR19WRVJTSU9O X1NUUikpLCA0KTsKKworCXJldHVybiBNYXgoc2l6ZSwgUEdfQ0FDSEVfTElORV9TSVpFICogMik7 Cit9CisKK3ZvaWQKK1ZlcnNpb25DdGxTaG1lbUluaXQodm9pZCkKK3sKKwlib29sCQlmb3VuZDsK KwlTaXplCQlzaXplID0gVmVyc2lvbkN0bFNobWVtU2l6ZSgpOworCisJdmVyc2lvbkN0bCA9IFNo bWVtSW5pdFN0cnVjdCgiVmVyc2lvbkN0bCIsIHNpemUsICZmb3VuZCk7CisKKwlpZiAoIWZvdW5k KQorCXsKKwkJTFdMb2NrSW5pdGlhbGl6ZSgmdmVyc2lvbkN0bC0+bG9jaywgTFdUUkFOQ0hFX1ZF UlNJT05fQ1RMKTsKKwkJdmVyc2lvbkN0bC0+c2l6ZSA9IHNpemUgLSBvZmZzZXRvZihQZ1ZlcnNp b25Db250cm9sLCB2ZXJzaW9uKTsKKworCisJCW1lbXNldCh2ZXJzaW9uQ3RsLT52ZXJzaW9uLCAw LCB2ZXJzaW9uQ3RsLT5zaXplKTsKKwkJdmVyc2lvbkN0bC0+c2l6ZSAtPSAxOyAvKiBndWFyYW50 ZWUgMCBieXRlIGF0IGVuZCBvZiB2ZXJzaW9uICovCisJCW1lbXNldCh2ZXJzaW9uQ3RsLT52ZXJz aW9uX3Nob3J0LCAwLCBQR19DQUNIRV9MSU5FX1NJWkUpOworCisJCXZlcnNpb25DdGwtPnZlcnNp b25fbnVtID0gUEdfVkVSU0lPTl9OVU07CisJCXN0cm5jcHkodmVyc2lvbkN0bC0+dmVyc2lvbl9z aG9ydCwgUEdfVkVSU0lPTiwgUEdfQ0FDSEVfTElORV9TSVpFKTsKKwkJc3RybmNweSh2ZXJzaW9u Q3RsLT52ZXJzaW9uLCBQR19WRVJTSU9OX1NUUiwgdmVyc2lvbkN0bC0+c2l6ZSk7CisKKwkJVkVS U0lPTl9HVUMgPSBmaW5kX29wdGlvbigic2VydmVyX3ZlcnNpb24iLCBmYWxzZSwgZmFsc2UsIExP Ryk7CisJCVZFUlNJT05fTlVNX0dVQyA9IGZpbmRfb3B0aW9uKCJzZXJ2ZXJfdmVyc2lvbl9udW0i LCBmYWxzZSwgZmFsc2UsCisJCQkJCQkJCQkgIExPRyk7CisKKwkJKihWRVJTSU9OX0dVQy0+X3N0 cmluZy52YXJpYWJsZSkgPSB2ZXJzaW9uQ3RsLT52ZXJzaW9uX3Nob3J0OworCQlWRVJTSU9OX05V TV9HVUMtPl9pbnQudmFyaWFibGUgPSAmdmVyc2lvbkN0bC0+dmVyc2lvbl9udW07CisJCVZFUlNJ T05fTlVNX0dVQy0+X2ludC5taW4gPSAwOworCQlWRVJTSU9OX05VTV9HVUMtPl9pbnQubWF4ID0g SU5UX01BWDsKKwl9CiB9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu ZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCAzNTc5Y2VjNTc0NC4u Mzk1NTU5MmYyODQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQK KysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtMjYxLDggKzI2MSwxMyBA QAogICBwcm9uYW1lID0+ICdib29sbmUnLCBwcm9sZWFrcHJvb2YgPT4gJ3QnLCBwcm9yZXR0eXBl ID0+ICdib29sJywKICAgcHJvYXJndHlwZXMgPT4gJ2Jvb2wgYm9vbCcsIHByb3NyYyA9PiAnYm9v bG5lJyB9LAogeyBvaWQgPT4gJzg5JywgZGVzY3IgPT4gJ1Bvc3RncmVTUUwgdmVyc2lvbiBzdHJp bmcnLAotICBwcm9uYW1lID0+ICd2ZXJzaW9uJywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9yZXR0 eXBlID0+ICd0ZXh0JywKLSAgcHJvYXJndHlwZXMgPT4gJycsIHByb3NyYyA9PiAncGdzcWxfdmVy c2lvbicgfSwKKyAgcHJvbmFtZSA9PiAndmVyc2lvbicsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJv cGFyYWxsZWwgPT4gJ3UnLAorICBwcm9yZXR0eXBlID0+ICd0ZXh0JywgcHJvYXJndHlwZXMgPT4g JycsIHByb3NyYyA9PiAncGdzcWxfdmVyc2lvbicgfSwKK3sgb2lkID0+ICc5OTAxJywgZGVzY3Ig PT4gJ1VwZGF0ZSBQb3N0Z3JlU1FMIHRvIGEgbmV3IHNwZWNpZmllZCB2ZXJzaW9uJywKKyAgcHJv bmFtZSA9PiAncGdfdXBkYXRlX3ZlcnNpb24nLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5 cGUgPT4gJ3RleHQnLAorICBwcm9hcmd0eXBlcyA9PiAnaW50NCB0ZXh0IHRleHQnLCBwcm9zcmMg PT4gJ3Bnc3FsX3VwZGF0ZV92ZXJzaW9uJywKKyAgcHJvcGFyYWxsZWwgPT4gJ3UnLCBwcm9pc3N0 cmljdCA9PiAnZicsCisgIHByb2FyZ25hbWVzID0+ICd7dmVyc2lvbl9udW0sdmVyc2lvbl9zaG9y dCxmdWxsX3ZlcnNpb259JyB9LAogCiB7IG9pZCA9PiAnODYnLCBkZXNjciA9PiAnSS9PJywKICAg cHJvbmFtZSA9PiAncGdfZGRsX2NvbW1hbmRfaW4nLCBwcm9yZXR0eXBlID0+ICdwZ19kZGxfY29t bWFuZCcsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaCBiL3NyYy9pbmNsdWRl L21pc2NhZG1pbi5oCmluZGV4IDA0ZjI5NzQ4YmU3Li44ZmNmZWJiMGZjMSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKKysrIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKQEAg LTQzNiw2ICs0MzYsMTEgQEAgZXh0ZXJuIHZvaWQgSW5pdGlhbGl6ZVN5c3RlbVVzZXIoY29uc3Qg Y2hhciAqYXV0aG5faWQsCiAJCQkJCQkJCSBjb25zdCBjaGFyICphdXRoX21ldGhvZCk7CiBleHRl cm4gY29uc3QgY2hhciAqR2V0U3lzdGVtVXNlcih2b2lkKTsKIAorZXh0ZXJuIHZvaWQgU2V0Q3Vy cmVudFZlcnNpb24oaW50IHZlcnNpb25fbnVtLCB0ZXh0ICp2ZXJzaW9uX3Nob3J0LCB0ZXh0ICp2 ZXJzaW9uX3N0cik7CitleHRlcm4gY2hhciAqR2V0Q3VycmVudFZlcnNpb25TdHIodm9pZCk7Citl eHRlcm4gU2l6ZSBWZXJzaW9uQ3RsU2htZW1TaXplKHZvaWQpOworZXh0ZXJuIHZvaWQgVmVyc2lv bkN0bFNobWVtSW5pdCh2b2lkKTsKKwogLyogaW4gdXRpbHMvbWlzYy9zdXBlcnVzZXIuYyAqLwog ZXh0ZXJuIGJvb2wgc3VwZXJ1c2VyKHZvaWQpOwkvKiBjdXJyZW50IHVzZXIgaXMgc3VwZXJ1c2Vy ICovCiBleHRlcm4gYm9vbCBzdXBlcnVzZXJfYXJnKE9pZCByb2xlaWQpOwkvKiBnaXZlbiB1c2Vy IGlzIHN1cGVydXNlciAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sd2xvY2ts aXN0LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2x3bG9ja2xpc3QuaAppbmRleCA1OWVlMDk3OTc3 ZC4uMGExY2ViNGIxMzMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbHdsb2NrbGlz dC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbHdsb2NrbGlzdC5oCkBAIC0xMzgsMyArMTM4 LDQgQEAgUEdfTFdMT0NLVFJBTkNIRShYQUNUX1NMUlUsIFhhY3RTTFJVKQogUEdfTFdMT0NLVFJB TkNIRShQQVJBTExFTF9WQUNVVU1fRFNBLCBQYXJhbGxlbFZhY3V1bURTQSkKIFBHX0xXTE9DS1RS QU5DSEUoQUlPX1VSSU5HX0NPTVBMRVRJT04sIEFpb1VyaW5nQ29tcGxldGlvbikKIFBHX0xXTE9D S1RSQU5DSEUoU0hNRU1fSU5ERVgsIFNobWVtSW5kZXgpCitQR19MV0xPQ0tUUkFOQ0hFKFZFUlNJ T05fQ1RMLCBWZXJzaW9uQ29udHJvbCkKLS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --0000000000007ea9c5064e63d23d--