X-Original-To: pgsql-hackers-postgresql.org@localhost.postgresql.org Received: from localhost (av.hub.org [200.46.204.144]) by postgresql.org (Postfix) with ESMTP id 0FEA49DCAEE; Tue, 28 Feb 2006 11:44:16 -0400 (AST) Received: from postgresql.org ([200.46.204.71]) by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024) with ESMTP id 51931-07; Tue, 28 Feb 2006 11:44:20 -0400 (AST) X-Greylist: from auto-whitelisted by SQLgrey- X-Greylist: from auto-whitelisted by SQLgrey- Received: from gwmta.wicourts.gov (gwmta.wicourts.gov [165.219.244.99]) by postgresql.org (Postfix) with ESMTP id 5BDED9DCABF; Tue, 28 Feb 2006 11:44:12 -0400 (AST) Received: from Courts-MTA by gwmta.wicourts.gov with Novell_GroupWise; Tue, 28 Feb 2006 09:44:17 -0600 Message-Id: <44041B68.EE98.0025.0@wicourts.gov> X-Mailer: Novell GroupWise Internet Agent 7.0 Date: Tue, 28 Feb 2006 09:44:08 -0600 From: "Kevin Grittner" To: , Subject: temporary indexes Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=__Part9FBAD2D8.0__=" X-Virus-Scanned: by amavisd-new at hub.org X-Spam-Status: No, score=0.072 required=5 tests=[AWL=0.072] X-Spam-Score: 0.072 X-Spam-Level: X-Archive-Number: 200602/1194 X-Sequence-Number: 80332 --=__Part9FBAD2D8.0__= Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Disposition: inline Just a "wouldn't it be nice if" sort of feature request. I'm not sure how practical it is. Someone in our organization wrote a data fix query, which has sort of odd logic, but it does what they need. The problem is that it ran for 14 hours in a test against a copy of the data. I looked at it and figured it could do better with an extra index. The index took five minutes to build, and the run time for the query dropped to five minutes. The index is not needed for production, so it was then dropped. It struck me that it would be outstanding if the planner could recognize this sort of situation, and build a temporary index based on the snapshot of the data visible to the transaction. It seems to me that the obvious downside of this would be the explosion in the number of permutations the planner would need to examine -- based not just on what indexes ARE there, but which ones it could build. At a minimum, there would need to be a cost threshold below which it would not even consider the option. (In this case, as long as the optimizer spent less than 13 hours and 50 minutes considering its options, we would have come out ahead.) I'm not sure the details of this particular incident are that relevant, but I've attached the query and the two plans. -Kevin --=__Part9FBAD2D8.0__= Content-Type: application/octet-stream; name="datafix-Action.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="datafix-Action.txt" YmlnYmlyZD0+IFxkICJBY3Rpb24iCiAgICAgICAgICAgVGFibGUgInB1YmxpYy5BY3Rpb24iCiAg ICBDb2x1bW4gICAgfCAgICAgIFR5cGUgICAgICB8IE1vZGlmaWVycwotLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCiBhY3Rpb25TZXFObyAgfCAiQWN0aW9uU2VxTm9U IiB8IG5vdCBudWxsCiBqdXJ5WWVhciAgICAgfCAiSnVyeVllYXJUIiAgICB8IG5vdCBudWxsCiBj b3VudHlObyAgICAgfCAiQ291bnR5Tm9UIiAgICB8IG5vdCBudWxsCiBhY3Rpb25Db2RlICAgfCAi QWN0aW9uQ29kZVQiICB8IG5vdCBudWxsCiBzdGFydERhdGUgICAgfCAiRGF0ZVQiICAgICAgICB8 IG5vdCBudWxsCiBiYWlsaWZmTm8gICAgfCAiQmFpbGlmZk5vVCIgICB8CiBjYXNlTm8gICAgICAg fCAiQ2FzZU5vVCIgICAgICB8CiBjdG9mY05vICAgICAgfCAiQ3RvZmNOb1QiICAgICB8CiBlZmZE YXRlICAgICAgfCAiRGF0ZVQiICAgICAgICB8CiBlbmREYXRlICAgICAgfCAiRGF0ZVQiICAgICAg ICB8CiBqdXJvcklkICAgICAgfCAiSnVyb3JJZFQiICAgICB8CiBwYW5lbElkICAgICAgfCAiUGFu ZWxJZFQiICAgICB8CiBwb29sSWQgICAgICAgfCAiUG9vbElkVCIgICAgICB8CiBjb21tZW50cyAg ICAgfCAiVGV4dFQiICAgICAgICB8CiBkYXRlSW5zZXJ0ZWQgfCAiRGF0ZVQiICAgICAgICB8CiB0 aW1lSW5zZXJ0ZWQgfCAiVGltZVQiICAgICAgICB8CkluZGV4ZXM6CiAgICAiQWN0aW9uX3BrZXki IFBSSU1BUlkgS0VZLCBidHJlZSAoImNvdW50eU5vIiwgImFjdGlvblNlcU5vIiwgImp1cnlZZWFy IikKICAgICJBY3Rpb25fanVyb3IiIGJ0cmVlICgiY291bnR5Tm8iLCAianVyeVllYXIiLCAianVy b3JJZCIsICJhY3Rpb25TZXFObyIsICJhY3Rpb25Db2RlIikKCg== --=__Part9FBAD2D8.0__= Content-Type: application/octet-stream; name="datafix-plan1.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="datafix-plan1.txt" IE1lcmdlIEpvaW4gIChjb3N0PTE2MDEzMDczMjQuMDIuLjE2MDk3Mzc1OTkuMzAgcm93cz0xNDY0 Mjkgd2lkdGg9MTgyKQogICBNZXJnZSBDb25kOiAoKCJvdXRlciIuIj9jb2x1bW4xNj8iID0gImlu bmVyIi4iP2NvbHVtbjg/IikgQU5EICgib3V0ZXIiLiI/Y29sdW1uMTc/IiA9ICJpbm5lciIuIj9j b2x1bW45PyIpKQogICBKb2luIEZpbHRlcjogKCgoImlubmVyIi4ic3RhcnREYXRlIik6OmRhdGUg PCAoIm91dGVyIi4ic3RhcnREYXRlIik6OmRhdGUpIEFORCAoTk9UIChzdWJwbGFuKSkpCiAgIC0+ ICBTb3J0ICAoY29zdD0xNjAxMDA3MjUyLjMyLi4xNjAxMDA4MTE5LjczIHJvd3M9MzQ2OTYzIHdp ZHRoPTE1NCkKICAgICAgICAgU29ydCBLZXk6ICgiQWN0aW9uIi4ianVyb3JJZCIpOjppbnRlZ2Vy LCAoIkFjdGlvbiIuImp1cnlZZWFyIik6OmJwY2hhcgogICAgICAgICAtPiAgSW5kZXggU2NhbiB1 c2luZyAiQWN0aW9uX3BrZXkiIG9uICJBY3Rpb24iICAoY29zdD0wLjAwLi4xNjAwOTU5MDU5LjA4 IHJvd3M9MzQ2OTYzIHdpZHRoPTE1NCkKICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKCgiY291 bnR5Tm8iKTo6c21hbGxpbnQgPSA0MCkKICAgICAgICAgICAgICAgRmlsdGVyOiAoKCgiYWN0aW9u Q29kZSIpOjpicGNoYXIgPD4gJ0FQT09MJzo6YnBjaGFyKSBBTkQgKCgiYWN0aW9uQ29kZSIpOjpi cGNoYXIgPD4gJ1JQT09MJzo6YnBjaGFyKSBBTkQgKCgiYWN0aW9uQ29kZSIpOjpicGNoYXIgPD4g J0FQQU4nOjpicGNoYXIpIEFORCAoKCJhY3Rpb25Db2RlIik6OmJwY2hhciA8PiAnUlBBTic6OmJw Y2hhcikgQU5EICgoImFjdGlvbkNvZGUiKTo6YnBjaGFyIDw+ICdNUE9PTCc6OmJwY2hhcikgQU5E ICgoImFjdGlvbkNvZGUiKTo6YnBjaGFyIDw+ICdNUEFOJzo6YnBjaGFyKSBBTkQgKCgiYWN0aW9u Q29kZSIpOjpicGNoYXIgPD4gJ1BSJzo6YnBjaGFyKSBBTkQgKCgiYWN0aW9uQ29kZSIpOjpicGNo YXIgPD4gJ0pQUCc6OmJwY2hhcikgQU5EICgoImFjdGlvbkNvZGUiKTo6YnBjaGFyIDw+ICdNRlJP TSc6OmJwY2hhcikgQU5EICgoImFjdGlvbkNvZGUiKTo6YnBjaGFyIDw+ICdNTkVYVCc6OmJwY2hh cikgQU5EIChzdWJwbGFuKSBBTkQgKCgoInBvb2xJZCIgSVMgTlVMTCkgQU5EIChzdWJwbGFuKSkg T1IgKCgicGFuZWxJZCIgSVMgTlVMTCkgQU5EIChzdWJwbGFuKSkpKQogICAgICAgICAgICAgICBT dWJQbGFuCiAgICAgICAgICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgIkFjdGlvbl9wa2V5 IiBvbiAiQWN0aW9uIiBhMSAgKGNvc3Q9MC4wMC4uNDM2LjgxIHJvd3M9MSB3aWR0aD0wKQogICAg ICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgoKCJjb3VudHlObyIpOjpzbWFsbGludCA9 IDQwKSBBTkQgKCgiY291bnR5Tm8iKTo6c21hbGxpbnQgPSAoJDApOjpzbWFsbGludCkgQU5EICgo ImFjdGlvblNlcU5vIik6OmludGVnZXIgPCAoJDMpOjppbnRlZ2VyKSBBTkQgKCgianVyeVllYXIi KTo6YnBjaGFyID0gKCQxKTo6YnBjaGFyKSkKICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6 ICgoKCJqdXJvcklkIik6OmludGVnZXIgPSAoJDIpOjppbnRlZ2VyKSBBTkQgKCgoImFjdGlvbkNv ZGUiKTo6YnBjaGFyID0gJ0FQQU4nOjpicGNoYXIpIE9SICgoImFjdGlvbkNvZGUiKTo6YnBjaGFy ID0gJ01QQU4nOjpicGNoYXIpKSkKICAgICAgICAgICAgICAgICAtPiAgSW5kZXggU2NhbiB1c2lu ZyAiQWN0aW9uX3BrZXkiIG9uICJBY3Rpb24iIGExICAoY29zdD0wLjAwLi40MzYuODEgcm93cz0x IHdpZHRoPTApCiAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKCgoImNvdW50eU5v Iik6OnNtYWxsaW50ID0gNDApIEFORCAoKCJjb3VudHlObyIpOjpzbWFsbGludCA9ICgkMCk6OnNt YWxsaW50KSBBTkQgKCgiYWN0aW9uU2VxTm8iKTo6aW50ZWdlciA8ICgkMyk6OmludGVnZXIpIEFO RCAoKCJqdXJ5WWVhciIpOjpicGNoYXIgPSAoJDEpOjpicGNoYXIpKQogICAgICAgICAgICAgICAg ICAgICAgIEZpbHRlcjogKCgoImp1cm9ySWQiKTo6aW50ZWdlciA9ICgkMik6OmludGVnZXIpIEFO RCAoKCgiYWN0aW9uQ29kZSIpOjpicGNoYXIgPSAnQVBPT0wnOjpicGNoYXIpIE9SICgoImFjdGlv bkNvZGUiKTo6YnBjaGFyID0gJ01QT09MJzo6YnBjaGFyKSkpCiAgICAgICAgICAgICAgICAgLT4g IEluZGV4IFNjYW4gdXNpbmcgIkp1cnlDb250cm9sX3BrZXkiIG9uICJKdXJ5Q29udHJvbCIgamMg IChjb3N0PTAuMDAuLjMuNzMgcm93cz0xIHdpZHRoPTApCiAgICAgICAgICAgICAgICAgICAgICAg SW5kZXggQ29uZDogKCgoImNvdW50eU5vIik6OnNtYWxsaW50ID0gNDApIEFORCAoKCJjb3VudHlO byIpOjpzbWFsbGludCA9ICgkMCk6OnNtYWxsaW50KSkKICAgICAgICAgICAgICAgICAgICAgICBG aWx0ZXI6ICgoImp1cnlZZWFyIik6OmJwY2hhciA9ICgkMSk6OmJwY2hhcikKICAgLT4gIFNvcnQg IChjb3N0PTMwMDA3MS42OS4uMzAwOTk0LjU0IHJvd3M9MzY5MTM3IHdpZHRoPTUwKQogICAgICAg ICBTb3J0IEtleTogKGEyLiJqdXJvcklkIik6OmludGVnZXIsIChhMi4ianVyeVllYXIiKTo6YnBj aGFyCiAgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uICJBY3Rpb24iIGEyICAoY29zdD0x NDYxMy41Ni4uMjU4MDA1Ljg2IHJvd3M9MzY5MTM3IHdpZHRoPTUwKQogICAgICAgICAgICAgICBS ZWNoZWNrIENvbmQ6ICgoImNvdW50eU5vIik6OnNtYWxsaW50ID0gNDApCiAgICAgICAgICAgICAg IEZpbHRlcjogKCgoImFjdGlvbkNvZGUiKTo6YnBjaGFyID0gJ0FQT09MJzo6YnBjaGFyKSBPUiAo KCJhY3Rpb25Db2RlIik6OmJwY2hhciA9ICdSUE9PTCc6OmJwY2hhcikgT1IgKCgiYWN0aW9uQ29k ZSIpOjpicGNoYXIgPSAnQVBBTic6OmJwY2hhcikgT1IgKCgiYWN0aW9uQ29kZSIpOjpicGNoYXIg PSAnUlBBTic6OmJwY2hhcikgT1IgKCgiYWN0aW9uQ29kZSIpOjpicGNoYXIgPSAnTVBPT0wnOjpi cGNoYXIpIE9SICgoImFjdGlvbkNvZGUiKTo6YnBjaGFyID0gJ01QQU4nOjpicGNoYXIpKQogICAg ICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gIkFjdGlvbl9wa2V5IiAgKGNvc3Q9 MC4wMC4uMTQ2MTMuNTYgcm93cz0xODI0NDQ3IHdpZHRoPTApCiAgICAgICAgICAgICAgICAgICAg IEluZGV4IENvbmQ6ICgoImNvdW50eU5vIik6OnNtYWxsaW50ID0gNDApCiAgIFN1YlBsYW4KICAg ICAtPiAgSW5kZXggU2NhbiB1c2luZyAiQWN0aW9uX3BrZXkiIG9uICJBY3Rpb24iIGEzICAoY29z dD0wLjAwLi45LjU3IHJvd3M9MSB3aWR0aD0xNzYpCiAgICAgICAgICAgSW5kZXggQ29uZDogKCgo ImNvdW50eU5vIik6OnNtYWxsaW50ID0gNDApIEFORCAoKCJjb3VudHlObyIpOjpzbWFsbGludCA9 ICgkMCk6OnNtYWxsaW50KSBBTkQgKCgiY291bnR5Tm8iKTo6c21hbGxpbnQgPSAoJDUpOjpzbWFs bGludCkgQU5EICgoImp1cnlZZWFyIik6OmJwY2hhciA9ICgkMSk6OmJwY2hhcikgQU5EICgoImp1 cnlZZWFyIik6OmJwY2hhciA9ICgkNik6OmJwY2hhcikpCiAgICAgICAgICAgRmlsdGVyOiAoKCgi anVyb3JJZCIpOjppbnRlZ2VyID0gKCQyKTo6aW50ZWdlcikgQU5EICgoKCJhY3Rpb25Db2RlIik6 OmJwY2hhciA9ICdBUE9PTCc6OmJwY2hhcikgT1IgKCgiYWN0aW9uQ29kZSIpOjpicGNoYXIgPSAn UlBPT0wnOjpicGNoYXIpIE9SICgoImFjdGlvbkNvZGUiKTo6YnBjaGFyID0gJ0FQQU4nOjpicGNo YXIpIE9SICgoImFjdGlvbkNvZGUiKTo6YnBjaGFyID0gJ1JQQU4nOjpicGNoYXIpIE9SICgoImFj dGlvbkNvZGUiKTo6YnBjaGFyID0gJ01QT09MJzo6YnBjaGFyKSBPUiAoKCJhY3Rpb25Db2RlIik6 OmJwY2hhciA9ICdNUEFOJzo6YnBjaGFyKSkgQU5EICgoInN0YXJ0RGF0ZSIpOjpkYXRlIDwgKCQ0 KTo6ZGF0ZSkgQU5EICgoImp1cm9ySWQiKTo6aW50ZWdlciA9ICgkNyk6OmludGVnZXIpIEFORCAo KCJzdGFydERhdGUiKTo6ZGF0ZSA+PSAoJDgpOjpkYXRlKSBBTkQgKCgoInN0YXJ0RGF0ZSIpOjpk YXRlID4gKCQ4KTo6ZGF0ZSkgT1IgKCgiYWN0aW9uU2VxTm8iKTo6aW50ZWdlciA+ICgkOSk6Omlu dGVnZXIpKSkKKDI5IHJvd3MpCgo= --=__Part9FBAD2D8.0__= Content-Type: application/octet-stream; name="datafix-plan2.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="datafix-plan2.txt" IE1lcmdlIEpvaW4gIChjb3N0PTIwMjYzNzQ5LjY3Li4yMzQwMDAzNi4yMSByb3dzPTE0NTkxNCB3 aWR0aD0xODIpCiAgIE1lcmdlIENvbmQ6ICgoIm91dGVyIi4iP2NvbHVtbjE2PyIgPSAiaW5uZXIi LiI/Y29sdW1uOD8iKSBBTkQgKCJvdXRlciIuIj9jb2x1bW4xNz8iID0gImlubmVyIi4iP2NvbHVt bjk/IikpCiAgIEpvaW4gRmlsdGVyOiAoKCgiaW5uZXIiLiJzdGFydERhdGUiKTo6ZGF0ZSA8ICgi b3V0ZXIiLiJzdGFydERhdGUiKTo6ZGF0ZSkgQU5EIChOT1QgKHN1YnBsYW4pKSkKICAgLT4gIFNv cnQgIChjb3N0PTIwMDA3MjMwLjg4Li4yMDAwODA5Ni43NiByb3dzPTM0NjM1MiB3aWR0aD0xNTQp CiAgICAgICAgIFNvcnQgS2V5OiAoIkFjdGlvbiIuImp1cm9ySWQiKTo6aW50ZWdlciwgKCJBY3Rp b24iLiJqdXJ5WWVhciIpOjpicGNoYXIKICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgIkFj dGlvbl9wa2V5IiBvbiAiQWN0aW9uIiAgKGNvc3Q9MC4wMC4uMTk5NTkxMjYuMjcgcm93cz0zNDYz NTIgd2lkdGg9MTU0KQogICAgICAgICAgICAgICBJbmRleCBDb25kOiAoKCJjb3VudHlObyIpOjpz bWFsbGludCA9IDQwKQogICAgICAgICAgICAgICBGaWx0ZXI6ICgoKCJhY3Rpb25Db2RlIik6OmJw Y2hhciA8PiAnQVBPT0wnOjpicGNoYXIpIEFORCAoKCJhY3Rpb25Db2RlIik6OmJwY2hhciA8PiAn UlBPT0wnOjpicGNoYXIpIEFORCAoKCJhY3Rpb25Db2RlIik6OmJwY2hhciA8PiAnQVBBTic6OmJw Y2hhcikgQU5EICgoImFjdGlvbkNvZGUiKTo6YnBjaGFyIDw+ICdSUEFOJzo6YnBjaGFyKSBBTkQg KCgiYWN0aW9uQ29kZSIpOjpicGNoYXIgPD4gJ01QT09MJzo6YnBjaGFyKSBBTkQgKCgiYWN0aW9u Q29kZSIpOjpicGNoYXIgPD4gJ01QQU4nOjpicGNoYXIpIEFORCAoKCJhY3Rpb25Db2RlIik6OmJw Y2hhciA8PiAnUFInOjpicGNoYXIpIEFORCAoKCJhY3Rpb25Db2RlIik6OmJwY2hhciA8PiAnSlBQ Jzo6YnBjaGFyKSBBTkQgKCgiYWN0aW9uQ29kZSIpOjpicGNoYXIgPD4gJ01GUk9NJzo6YnBjaGFy KSBBTkQgKCgiYWN0aW9uQ29kZSIpOjpicGNoYXIgPD4gJ01ORVhUJzo6YnBjaGFyKSBBTkQgKHN1 YnBsYW4pIEFORCAoKCgicG9vbElkIiBJUyBOVUxMKSBBTkQgKHN1YnBsYW4pKSBPUiAoKCJwYW5l bElkIiBJUyBOVUxMKSBBTkQgKHN1YnBsYW4pKSkpCiAgICAgICAgICAgICAgIFN1YlBsYW4KICAg ICAgICAgICAgICAgICAtPiAgSW5kZXggU2NhbiB1c2luZyAiQWN0aW9uX2p1cm9yIiBvbiAiQWN0 aW9uIiBhMSAgKGNvc3Q9MC4wMC4uMy41MyByb3dzPTEgd2lkdGg9MCkKICAgICAgICAgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAoKCgiY291bnR5Tm8iKTo6c21hbGxpbnQgPSA0MCkgQU5EICgo ImNvdW50eU5vIik6OnNtYWxsaW50ID0gKCQwKTo6c21hbGxpbnQpIEFORCAoKCJqdXJ5WWVhciIp OjpicGNoYXIgPSAoJDEpOjpicGNoYXIpIEFORCAoKCJqdXJvcklkIik6OmludGVnZXIgPSAoJDIp OjppbnRlZ2VyKSBBTkQgKCgiYWN0aW9uU2VxTm8iKTo6aW50ZWdlciA8ICgkMyk6OmludGVnZXIp KQogICAgICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKCgoImFjdGlvbkNvZGUiKTo6YnBjaGFy ID0gJ0FQQU4nOjpicGNoYXIpIE9SICgoImFjdGlvbkNvZGUiKTo6YnBjaGFyID0gJ01QQU4nOjpi cGNoYXIpKQogICAgICAgICAgICAgICAgIC0+ICBJbmRleCBTY2FuIHVzaW5nICJBY3Rpb25fanVy b3IiIG9uICJBY3Rpb24iIGExICAoY29zdD0wLjAwLi4zLjUzIHJvd3M9MSB3aWR0aD0wKQogICAg ICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgoKCJjb3VudHlObyIpOjpzbWFsbGludCA9 IDQwKSBBTkQgKCgiY291bnR5Tm8iKTo6c21hbGxpbnQgPSAoJDApOjpzbWFsbGludCkgQU5EICgo Imp1cnlZZWFyIik6OmJwY2hhciA9ICgkMSk6OmJwY2hhcikgQU5EICgoImp1cm9ySWQiKTo6aW50 ZWdlciA9ICgkMik6OmludGVnZXIpIEFORCAoKCJhY3Rpb25TZXFObyIpOjppbnRlZ2VyIDwgKCQz KTo6aW50ZWdlcikpCiAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoKCgiYWN0aW9uQ29k ZSIpOjpicGNoYXIgPSAnQVBPT0wnOjpicGNoYXIpIE9SICgoImFjdGlvbkNvZGUiKTo6YnBjaGFy ID0gJ01QT09MJzo6YnBjaGFyKSkKICAgICAgICAgICAgICAgICAtPiAgSW5kZXggU2NhbiB1c2lu ZyAiSnVyeUNvbnRyb2xfcGtleSIgb24gIkp1cnlDb250cm9sIiBqYyAgKGNvc3Q9MC4wMC4uMy43 MyByb3dzPTEgd2lkdGg9MCkKICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoKCgi Y291bnR5Tm8iKTo6c21hbGxpbnQgPSA0MCkgQU5EICgoImNvdW50eU5vIik6OnNtYWxsaW50ID0g KCQwKTo6c21hbGxpbnQpKQogICAgICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKCgianVyeVll YXIiKTo6YnBjaGFyID0gKCQxKTo6YnBjaGFyKQogICAtPiAgU29ydCAgKGNvc3Q9MjU2NTE4Ljc5 Li4yNTc0NDAuMDEgcm93cz0zNjg0ODcgd2lkdGg9NTApCiAgICAgICAgIFNvcnQgS2V5OiAoYTIu Imp1cm9ySWQiKTo6aW50ZWdlciwgKGEyLiJqdXJ5WWVhciIpOjpicGNoYXIKICAgICAgICAgLT4g IEJpdG1hcCBIZWFwIFNjYW4gb24gIkFjdGlvbiIgYTIgIChjb3N0PTE0NjUxNS45Ny4uMjE0NTMx Ljc1IHJvd3M9MzY4NDg3IHdpZHRoPTUwKQogICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6ICgo KCgoImNvdW50eU5vIik6OnNtYWxsaW50ID0gNDApIEFORCAoKCJhY3Rpb25Db2RlIik6OmJwY2hh ciA9ICdBUE9PTCc6OmJwY2hhcikpIE9SICgoKCJjb3VudHlObyIpOjpzbWFsbGludCA9IDQwKSBB TkQgKCgiYWN0aW9uQ29kZSIpOjpicGNoYXIgPSAnUlBPT0wnOjpicGNoYXIpKSBPUiAoKCgiY291 bnR5Tm8iKTo6c21hbGxpbnQgPSA0MCkgQU5EICgoImFjdGlvbkNvZGUiKTo6YnBjaGFyID0gJ0FQ QU4nOjpicGNoYXIpKSBPUiAoKCgiY291bnR5Tm8iKTo6c21hbGxpbnQgPSA0MCkgQU5EICgoImFj dGlvbkNvZGUiKTo6YnBjaGFyID0gJ1JQQU4nOjpicGNoYXIpKSBPUiAoKCgiY291bnR5Tm8iKTo6 c21hbGxpbnQgPSA0MCkgQU5EICgoImFjdGlvbkNvZGUiKTo6YnBjaGFyID0gJ01QT09MJzo6YnBj aGFyKSkgT1IgKCgoImNvdW50eU5vIik6OnNtYWxsaW50ID0gNDApIEFORCAoKCJhY3Rpb25Db2Rl Iik6OmJwY2hhciA9ICdNUEFOJzo6YnBjaGFyKSkpIEFORCAoKCJjb3VudHlObyIpOjpzbWFsbGlu dCA9IDQwKSkKICAgICAgICAgICAgICAgLT4gIEJpdG1hcEFuZCAgKGNvc3Q9MTQ2NTE1Ljk3Li4x NDY1MTUuOTcgcm93cz00OTMxMyB3aWR0aD0wKQogICAgICAgICAgICAgICAgICAgICAtPiAgQml0 bWFwT3IgIChjb3N0PTEzMTkxMi40MC4uMTMxOTEyLjQwIHJvd3M9Mzk3Njg3IHdpZHRoPTApCiAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiAiQWN0aW9u X2p1cm9yIiAgKGNvc3Q9MC4wMC4uMjE5ODUuNDAgcm93cz0xNTkwNTQgd2lkdGg9MCkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKCgoImNvdW50eU5vIik6OnNt YWxsaW50ID0gNDApIEFORCAoKCJhY3Rpb25Db2RlIik6OmJwY2hhciA9ICdBUE9PTCc6OmJwY2hh cikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiAi QWN0aW9uX2p1cm9yIiAgKGNvc3Q9MC4wMC4uMjE5ODUuNDAgcm93cz0xNTU5OSB3aWR0aD0wKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoKCgiY291bnR5Tm8i KTo6c21hbGxpbnQgPSA0MCkgQU5EICgoImFjdGlvbkNvZGUiKTo6YnBjaGFyID0gJ1JQT09MJzo6 YnBjaGFyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2Fu IG9uICJBY3Rpb25fanVyb3IiICAoY29zdD0wLjAwLi4yMTk4NS40MCByb3dzPTE0MDIzNSB3aWR0 aD0wKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoKCgiY291 bnR5Tm8iKTo6c21hbGxpbnQgPSA0MCkgQU5EICgoImFjdGlvbkNvZGUiKTo6YnBjaGFyID0gJ0FQ QU4nOjpicGNoYXIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gIkFjdGlvbl9qdXJvciIgIChjb3N0PTAuMDAuLjIxOTg1LjQwIHJvd3M9NTE2MDIg d2lkdGg9MCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKCgo ImNvdW50eU5vIik6OnNtYWxsaW50ID0gNDApIEFORCAoKCJhY3Rpb25Db2RlIik6OmJwY2hhciA9 ICdSUEFOJzo6YnBjaGFyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJ bmRleCBTY2FuIG9uICJBY3Rpb25fanVyb3IiICAoY29zdD0wLjAwLi4yMTk4NS40MCByb3dzPTE1 NTk5IHdpZHRoPTApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6 ICgoKCJjb3VudHlObyIpOjpzbWFsbGludCA9IDQwKSBBTkQgKCgiYWN0aW9uQ29kZSIpOjpicGNo YXIgPSAnTVBPT0wnOjpicGNoYXIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0 bWFwIEluZGV4IFNjYW4gb24gIkFjdGlvbl9qdXJvciIgIChjb3N0PTAuMDAuLjIxOTg1LjQwIHJv d3M9MTU1OTkgd2lkdGg9MCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXgg Q29uZDogKCgoImNvdW50eU5vIik6OnNtYWxsaW50ID0gNDApIEFORCAoKCJhY3Rpb25Db2RlIik6 OmJwY2hhciA9ICdNUEFOJzo6YnBjaGFyKSkKICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uICJBY3Rpb25fcGtleSIgIChjb3N0PTAuMDAuLjE0NjAzLjMyIHJvd3M9 MTgyMTIzMyB3aWR0aD0wKQogICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAo KCJjb3VudHlObyIpOjpzbWFsbGludCA9IDQwKQogICBTdWJQbGFuCiAgICAgLT4gIEluZGV4IFNj YW4gdXNpbmcgIkFjdGlvbl9qdXJvciIgb24gIkFjdGlvbiIgYTMgIChjb3N0PTAuMDAuLjMuNTYg cm93cz0xIHdpZHRoPTE3NikKICAgICAgICAgICBJbmRleCBDb25kOiAoKCgiY291bnR5Tm8iKTo6 c21hbGxpbnQgPSA0MCkgQU5EICgoImNvdW50eU5vIik6OnNtYWxsaW50ID0gKCQwKTo6c21hbGxp bnQpIEFORCAoKCJjb3VudHlObyIpOjpzbWFsbGludCA9ICgkNSk6OnNtYWxsaW50KSBBTkQgKCgi anVyeVllYXIiKTo6YnBjaGFyID0gKCQxKTo6YnBjaGFyKSBBTkQgKCgianVyeVllYXIiKTo6YnBj aGFyID0gKCQ2KTo6YnBjaGFyKSBBTkQgKCgianVyb3JJZCIpOjppbnRlZ2VyID0gKCQyKTo6aW50 ZWdlcikgQU5EICgoImp1cm9ySWQiKTo6aW50ZWdlciA9ICgkNyk6OmludGVnZXIpKQogICAgICAg ICAgIEZpbHRlcjogKCgoKCJhY3Rpb25Db2RlIik6OmJwY2hhciA9ICdBUE9PTCc6OmJwY2hhcikg T1IgKCgiYWN0aW9uQ29kZSIpOjpicGNoYXIgPSAnUlBPT0wnOjpicGNoYXIpIE9SICgoImFjdGlv bkNvZGUiKTo6YnBjaGFyID0gJ0FQQU4nOjpicGNoYXIpIE9SICgoImFjdGlvbkNvZGUiKTo6YnBj aGFyID0gJ1JQQU4nOjpicGNoYXIpIE9SICgoImFjdGlvbkNvZGUiKTo6YnBjaGFyID0gJ01QT09M Jzo6YnBjaGFyKSBPUiAoKCJhY3Rpb25Db2RlIik6OmJwY2hhciA9ICdNUEFOJzo6YnBjaGFyKSkg QU5EICgoInN0YXJ0RGF0ZSIpOjpkYXRlIDwgKCQ0KTo6ZGF0ZSkgQU5EICgoInN0YXJ0RGF0ZSIp OjpkYXRlID49ICgkOCk6OmRhdGUpIEFORCAoKCgic3RhcnREYXRlIik6OmRhdGUgPiAoJDgpOjpk YXRlKSBPUiAoKCJhY3Rpb25TZXFObyIpOjppbnRlZ2VyID4gKCQ5KTo6aW50ZWdlcikpKQooNDIg cm93cykKCg== --=__Part9FBAD2D8.0__= Content-Type: application/octet-stream; name="datafix.qry" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="datafix.qry" VVBEQVRFICJBY3Rpb24iCiAgU0VUICJwb29sSWQiICA9IGEyLiJwb29sSWQiLAogICAgICAicGFu ZWxJZCIgPSBhMi4icGFuZWxJZCIKICBGUk9NICJBY3Rpb24iIGEyCiAgV0hFUkUgIkFjdGlvbiIu ImFjdGlvbkNvZGUiIG5vdCBpbgogICAgICAoJ0FQT09MJywnUlBPT0wnLCdBUEFOJywnUlBBTics ICdNUE9PTCcsJ01QQU4nLCAnUFInLCdKUFAnLCAnTUZST00nLCAnTU5FWFQnKQogICAgQU5EICJB Y3Rpb24iLiJjb3VudHlObyIgPSA0MAogICAgQU5EIEVYSVNUUwogICAgICAgICgKICAgICAgICAg IFNFTEVDVCAxIEZST00gIkp1cnlDb250cm9sIiBqYwogICAgICAgICAgICBXSEVSRSBqYy4iY291 bnR5Tm8iID0gNDAKICAgICAgICAgICAgICBBTkQgamMuImNvdW50eU5vIiA9ICJBY3Rpb24iLiJj b3VudHlObyIKICAgICAgICAgICAgICBBTkQgamMuImp1cnlZZWFyIiA9ICJBY3Rpb24iLiJqdXJ5 WWVhciIKICAgICAgICApCiAgICBBTkQgKCAgKCAiQWN0aW9uIi4icG9vbElkIiBpcyBudWxsCiAg ICAgICAgIEFORCBleGlzdHMKICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgc2VsZWN0IDEg ZnJvbSAiQWN0aW9uIiBhMQogICAgICAgICAgICAgICAgIHdoZXJlIGExLiJjb3VudHlObyIgICAg PSA0MAogICAgICAgICAgICAgICAgICAgYW5kIGExLiJjb3VudHlObyIgICAgPSAiQWN0aW9uIi4i Y291bnR5Tm8iCiAgICAgICAgICAgICAgICAgICBhbmQgYTEuImp1cnlZZWFyIiAgICA9ICJBY3Rp b24iLiJqdXJ5WWVhciIKICAgICAgICAgICAgICAgICAgIGFuZCBhMS4ianVyb3JJZCIgICAgID0g IkFjdGlvbiIuImp1cm9ySWQiCiAgICAgICAgICAgICAgICAgICBhbmQgYTEuImFjdGlvblNlcU5v IiA8ICJBY3Rpb24iLiJhY3Rpb25TZXFObyIKICAgICAgICAgICAgICAgICAgIGFuZCBhMS4iYWN0 aW9uQ29kZSIgaW4gKCdBUE9PTCcsJ01QT09MJykKICAgICAgICAgICAgICkKICAgICAgICAgICAp CiAgICAgICBPUiAgKCAiQWN0aW9uIi4icGFuZWxJZCIgaXMgbnVsbAogICAgICAgICBBTkQgZXhp c3RzCiAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgIHNlbGVjdCAxIGZyb20gIkFjdGlvbiIg YTEKICAgICAgICAgICAgICAgICB3aGVyZSBhMS4iY291bnR5Tm8iICAgID0gNDAKICAgICAgICAg ICAgICAgICAgIGFuZCBhMS4iY291bnR5Tm8iICAgID0gIkFjdGlvbiIuImNvdW50eU5vIgogICAg ICAgICAgICAgICAgICAgYW5kIGExLiJqdXJvcklkIiAgICAgPSAiQWN0aW9uIi4ianVyb3JJZCIK ICAgICAgICAgICAgICAgICAgIGFuZCBhMS4ianVyeVllYXIiICAgID0gIkFjdGlvbiIuImp1cnlZ ZWFyIgogICAgICAgICAgICAgICAgICAgYW5kIGExLiJhY3Rpb25TZXFObyIgPCAiQWN0aW9uIi4i YWN0aW9uU2VxTm8iCiAgICAgICAgICAgICAgICAgICBhbmQgYTEuImFjdGlvbkNvZGUiIGluICgn QVBBTicsJ01QQU4nKQogICAgICAgICAgICAgKQogICAgICAgICAgICkKICAgICAgICApCiAgICBB TkQgYTIuImNvdW50eU5vIiA9IDQwCiAgICBBTkQgYTIuImNvdW50eU5vIiA9ICJBY3Rpb24iLiJj b3VudHlObyIKICAgIEFORCBhMi4ianVyeVllYXIiID0gIkFjdGlvbiIuImp1cnlZZWFyIgogICAg QU5EIGEyLiJqdXJvcklkIiAgPSAiQWN0aW9uIi4ianVyb3JJZCIKICAgIEFORCBhMi4iYWN0aW9u Q29kZSIgSU4gKCdBUE9PTCcsJ1JQT09MJywnQVBBTicsJ1JQQU4nLCAnTVBPT0wnLCdNUEFOJykK ICAgIEFORCBhMi4ic3RhcnREYXRlIiA8ICAiQWN0aW9uIi4ic3RhcnREYXRlIgogICAgQU5EIE5P VCBFWElTVFMKICAgICAgICAoCiAgICAgICAgICBTRUxFQ1QgKiBGUk9NICJBY3Rpb24iIGEzCiAg ICAgICAgICAgIFdIRVJFIGEzLiJjb3VudHlObyIgPSA0MAogICAgICAgICAgICAgIEFORCBhMy4i Y291bnR5Tm8iID0gIkFjdGlvbiIuImNvdW50eU5vIgogICAgICAgICAgICAgIEFORCBhMy4ianVy eVllYXIiID0gIkFjdGlvbiIuImp1cnlZZWFyIgogICAgICAgICAgICAgIEFORCBhMy4ianVyb3JJ ZCIgID0gIkFjdGlvbiIuImp1cm9ySWQiCiAgICAgICAgICAgICAgQU5EIGEzLiJhY3Rpb25Db2Rl IiBJTiAoJ0FQT09MJywnUlBPT0wnLCdBUEFOJywnUlBBTicsICdNUE9PTCcsJ01QQU4nKQogICAg ICAgICAgICAgIEFORCBhMy4ic3RhcnREYXRlIiA8ICAiQWN0aW9uIi4ic3RhcnREYXRlIgogICAg ICAgICAgICAgIEFORCBhMy4iY291bnR5Tm8iID0gYTIuImNvdW50eU5vIgogICAgICAgICAgICAg IEFORCBhMy4ianVyeVllYXIiID0gYTIuImp1cnlZZWFyIgogICAgICAgICAgICAgIEFORCBhMy4i anVyb3JJZCIgID0gYTIuImp1cm9ySWQiCiAgICAgICAgICAgICAgQU5EIGEzLiJzdGFydERhdGUi ID49IGEyLiJzdGFydERhdGUiCiAgICAgICAgICAgICAgQU5EICggYTMuInN0YXJ0RGF0ZSIgPiBh Mi4ic3RhcnREYXRlIgogICAgICAgICAgICAgICAgIE9SIGEzLiJhY3Rpb25TZXFObyIgPiBhMi4i YWN0aW9uU2VxTm8iCiAgICAgICAgICAgICAgICAgICkKICAgICAgICApOwoK --=__Part9FBAD2D8.0__=--