Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.72) (envelope-from ) id 1UO771-000292-HE for pgsql-performance@arkaria.postgresql.org; Fri, 05 Apr 2013 13:55:27 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.72) (envelope-from ) id 1UO770-0000SY-S0 for pgsql-performance@arkaria.postgresql.org; Fri, 05 Apr 2013 13:55:26 +0000 Received: from makus.postgresql.org ([2001:4800:7903:4::125]) by malur.postgresql.org with esmtp (Exim 4.72) (envelope-from ) id 1UO76y-0000RA-WC for pgsql-performance@postgresql.org; Fri, 05 Apr 2013 13:55:25 +0000 Received: from smtp11.smtpout.orange.fr ([80.12.242.133] helo=smtp.smtpout.orange.fr) by makus.postgresql.org with esmtp (Exim 4.72) (envelope-from ) id 1UO76q-0006xI-Fa for pgsql-performance@postgresql.org; Fri, 05 Apr 2013 13:55:24 +0000 Received: from axege.com ([82.127.232.162]) by mwinf5d22 with ME id LDvD1l00E3WtTCJ03DvDci; Fri, 05 Apr 2013 15:55:14 +0200 Received: from localhost (localhost [127.0.0.1]) by axege.com (Postfix) with ESMTP id 3C4A143DE03 for ; Fri, 5 Apr 2013 15:55:13 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at myhostname="axege.com." Received: from axege.com ([127.0.0.1]) by localhost (axege.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id N7RQf3Arxa3w for ; Fri, 5 Apr 2013 15:55:12 +0200 (CEST) Received: from [192.168.20.20] (unknown [37.161.75.182]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by axege.com (Postfix) with ESMTPSA id 0A10B43DE02 for ; Fri, 5 Apr 2013 15:55:11 +0200 (CEST) Message-ID: <515ED7BC.40907@axege.com> Date: Fri, 05 Apr 2013 15:55:08 +0200 From: Franck Routier User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130404 Thunderbird/17.0.5 MIME-Version: 1.0 To: pgsql-performance@postgresql.org Subject: Re: What happens between end of explain analyze and end of query execution ? References: <515D92BF.5000309@axege.com> <515D9FC5.7030105@axege.com> <18910.1365092713@sss.pgh.pa.us> <515DCB34.6040801@axege.com> <6354.1365102532@sss.pgh.pa.us> In-Reply-To: <6354.1365102532@sss.pgh.pa.us> Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha1; boundary="------------ms040205090302070308010800" X-Pg-Spam-Score: -1.1 (-) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-performance Precedence: bulk Sender: pgsql-performance-owner@postgresql.org Ceci est un message signé cryptographiquement au format MIME. --------------ms040205090302070308010800 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: quoted-printable Le 04/04/2013 21:08, Tom Lane a =E9crit : > Franck Routier writes: >> The request is not using any function. It looks like this: >> [ unexciting query ] > Hmph. Can't see any reason for that to take a remarkably long time to > plan. Can you put together a self-contained test case demonstrating > excessive planning time? What PG version is this, anyway? > > regards, tom lane > > Well, I don't know how to reproduce, as it is really only happening on=20 this database. What I notice is that removing joins has a huge impact on the time=20 explain takes to return: The full query takes 2.6 seconds to return. Notice it has dropped from=20 3.6 seconds to 2.6 since yesterday after I did a vacuum analyze on the=20 tables that go into the request. EXPLAIN SELECT * FROM sanrss LEFT JOIN sanrum ON sanrum.sanrum___rforefide =3D=20 sanrss.sanrss___rforefide AND sanrum.sanrum___rfovsnide =3D=20 sanrss.sanrss___rfovsnide AND sanrum.sanrum___sanrsside =3D sanrss.sanrss= ide LEFT JOIN sanact ON sanact.sanact___rforefide =3D=20 sanrum.sanrum___rforefide AND sanact.sanact___rfovsnide =3D=20 sanrum.sanrum___rfovsnide AND sanact.sanact___sanrsside =3D=20 sanrum.sanrum___sanrsside AND sanact.sanact___sanrumide =3D=20 sanrum.sanrumide AND sanact.sanact___sanrumide IS NOT NULL AND=20 sanact.sanact___rsanopide=3D'CCAM' LEFT JOIN sandia ON sandia.sandia___rforefide =3D=20 sanrum.sanrum___rforefide AND sandia.sandia___rfovsnide =3D=20 sanrum.sanrum___rfovsnide AND sandia.sandia___sanrsside =3D=20 sanrum.sanrum___sanrsside AND sandia.sandia___sanrumide =3D=20 sanrum.sanrumide AND sandia.sandiasig=3D1 LEFT JOIN saneds ON sanrss.sanrss___rforefide =3D=20 saneds.saneds___rforefide AND sanrss.sanrss___rfovsnide =3D=20 saneds.saneds___rfovsnide AND sanrss.sanrss___sanedside =3D saneds.saneds= ide LEFT JOIN rsaidp ON saneds.saneds___rforefide =3D=20 rsaidp.rsaidp___rforefide AND saneds.saneds___rsaidpide =3D rsaidp.rsaidp= ide WHERE sanrss.sanrss___rforefide =3D 'CHCL' AND=20 sanrss.sanrss___rfovsnide =3D '201012_600' AND sanrss.sanrsside =3D '1= 188100' ORDER BY sanrum.sanrumord, sanrum.sanrumide =3D=3D> 2.6 seconds If I remove the join on either table 'sandia' or table 'saneds', the=20 explain return in 1.2 seconds. If I remove both, explain returns in 48ms.= EXPLAIN SELECT * FROM sanrss LEFT JOIN sanrum ON sanrum.sanrum___rforefide =3D=20 sanrss.sanrss___rforefide AND sanrum.sanrum___rfovsnide =3D=20 sanrss.sanrss___rfovsnide AND sanrum.sanrum___sanrsside =3D sanrss.sanrss= ide LEFT JOIN sanact ON sanact.sanact___rforefide =3D=20 sanrum.sanrum___rforefide AND sanact.sanact___rfovsnide =3D=20 sanrum.sanrum___rfovsnide AND sanact.sanact___sanrsside =3D=20 sanrum.sanrum___sanrsside AND sanact.sanact___sanrumide =3D=20 sanrum.sanrumide AND sanact.sanact___sanrumide IS NOT NULL AND=20 sanact.sanact___rsanopide=3D'CCAM' LEFT JOIN saneds ON sanrss.sanrss___rforefide =3D=20 saneds.saneds___rforefide AND sanrss.sanrss___rfovsnide =3D=20 saneds.saneds___rfovsnide AND sanrss.sanrss___sanedside =3D saneds.saneds= ide LEFT JOIN rsaidp ON saneds.saneds___rforefide =3D=20 rsaidp.rsaidp___rforefide AND saneds.saneds___rsaidpide =3D rsaidp.rsaidp= ide WHERE sanrss.sanrss___rforefide =3D 'CHCL' AND=20 sanrss.sanrss___rfovsnide =3D '201012_600' AND sanrss.sanrsside =3D '1= 188100' ORDER BY sanrum.sanrumord, sanrum.sanrumide =3D=3D> 1.2 seconds EXPLAIN SELECT * FROM sanrss LEFT JOIN sanrum ON sanrum.sanrum___rforefide =3D=20 sanrss.sanrss___rforefide AND sanrum.sanrum___rfovsnide =3D=20 sanrss.sanrss___rfovsnide AND sanrum.sanrum___sanrsside =3D sanrss.sanrss= ide LEFT JOIN sanact ON sanact.sanact___rforefide =3D=20 sanrum.sanrum___rforefide AND sanact.sanact___rfovsnide =3D=20 sanrum.sanrum___rfovsnide AND sanact.sanact___sanrsside =3D=20 sanrum.sanrum___sanrsside AND sanact.sanact___sanrumide =3D=20 sanrum.sanrumide AND sanact.sanact___sanrumide IS NOT NULL AND=20 sanact.sanact___rsanopide=3D'CCAM' LEFT JOIN sandia ON sandia.sandia___rforefide =3D=20 sanrum.sanrum___rforefide AND sandia.sandia___rfovsnide =3D=20 sanrum.sanrum___rfovsnide AND sandia.sandia___sanrsside =3D=20 sanrum.sanrum___sanrsside AND sandia.sandia___sanrumide =3D=20 sanrum.sanrumide AND sandia.sandiasig=3D1 WHERE sanrss.sanrss___rforefide =3D 'CHCL' AND=20 sanrss.sanrss___rfovsnide =3D '201012_600' AND sanrss.sanrsside =3D '1= 188100' ORDER BY sanrum.sanrumord, sanrum.sanrumide =3D=3D> 1.2 seconds EXPLAIN SELECT * FROM sanrss LEFT JOIN sanrum ON sanrum.sanrum___rforefide =3D=20 sanrss.sanrss___rforefide AND sanrum.sanrum___rfovsnide =3D=20 sanrss.sanrss___rfovsnide AND sanrum.sanrum___sanrsside =3D sanrss.sanrss= ide LEFT JOIN sanact ON sanact.sanact___rforefide =3D=20 sanrum.sanrum___rforefide AND sanact.sanact___rfovsnide =3D=20 sanrum.sanrum___rfovsnide AND sanact.sanact___sanrsside =3D=20 sanrum.sanrum___sanrsside AND sanact.sanact___sanrumide =3D=20 sanrum.sanrumide AND sanact.sanact___sanrumide IS NOT NULL AND=20 sanact.sanact___rsanopide=3D'CCAM' WHERE sanrss.sanrss___rforefide =3D 'CHCL' AND=20 sanrss.sanrss___rfovsnide =3D '201012_600' AND sanrss.sanrsside =3D '1= 188100' ORDER BY sanrum.sanrumord, sanrum.sanrumide =3D=3D> 48 ms Maybe the statistics tables for sandia and saneds are in a bad shape ?=20 (don't know how to check this). Regards, Franck --------------ms040205090302070308010800 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: Signature cryptographique S/MIME MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIINYjCC BjQwggQcoAMCAQICAR4wDQYJKoZIhvcNAQEFBQAwfTELMAkGA1UEBhMCSUwxFjAUBgNVBAoT DVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNp Z25pbmcxKTAnBgNVBAMTIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA3 MTAyNDIxMDE1NVoXDTE3MTAyNDIxMDE1NVowgYwxCzAJBgNVBAYTAklMMRYwFAYDVQQKEw1T dGFydENvbSBMdGQuMSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWdu aW5nMTgwNgYDVQQDEy9TdGFydENvbSBDbGFzcyAxIFByaW1hcnkgSW50ZXJtZWRpYXRlIENs aWVudCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMcJg8zOLdgasSmkLhOr lr6KMoOMpohBllVHrdRvEg/q6r8jR+EK75xCGhR8ToREoqe7zM9/UnC6TS2y9UKTpT1v7RSM zR0t6ndl0TWBuUr/UXBhPk+Kmy7bI4yW4urC+y7P3/1/X7U8ocb8VpH/Clt+4iq7nirMcNh6 qJR+xjOhV+VHzQMALuGYn5KZmc1NbJQYclsGkDxDz2UbFqE2+6vIZoL+jb9x4Pa5gNf1TwSD kOkikZB1xtB4ZqtXThaABSONdfmv/Z1pua3FYxnCFmdr/+N2JLKutIxMYqQOJebr/f/h5t95 m4JgrM3Y/w7YX9d7YAL9jvN4SydHsU6n65cCAwEAAaOCAa0wggGpMA8GA1UdEwEB/wQFMAMB Af8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRTcu2SnODaywFcfH6WNU7y1LhRgjAfBgNV HSMEGDAWgBROC+8apEBbpRdphzDKNGhD0EGu8jBmBggrBgEFBQcBAQRaMFgwJwYIKwYBBQUH MAGGG2h0dHA6Ly9vY3NwLnN0YXJ0c3NsLmNvbS9jYTAtBggrBgEFBQcwAoYhaHR0cDovL3d3 dy5zdGFydHNzbC5jb20vc2ZzY2EuY3J0MFsGA1UdHwRUMFIwJ6AloCOGIWh0dHA6Ly93d3cu c3RhcnRzc2wuY29tL3Nmc2NhLmNybDAnoCWgI4YhaHR0cDovL2NybC5zdGFydHNzbC5jb20v c2ZzY2EuY3JsMIGABgNVHSAEeTB3MHUGCysGAQQBgbU3AQIBMGYwLgYIKwYBBQUHAgEWImh0 dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93 d3cuc3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwDQYJKoZIhvcNAQEFBQADggIBAAqD CH14qywGXLhjjF6uHLkjd02hcdh9hrw+VUsv+q1eeQWB21jWj3kJ96AUlPCoEGZ/ynJNScWy 6QMVQjbbMXltUfO4n4bGGdKo3awPWp61tjAFgraLJgDk+DsSvUD6EowjMTNx25GQgyYJ5RPI zKKR9tQW8gGK+2+RHxkUCTbYFnL6kl8Ch507rUdPPipJ9CgJFws3kDS3gOS5WFMxcjO5DwKf KSETEPrHh7p5shuuNktvsv6hxHTLhiMKX893gxdT3XLS9OKmCv87vkINQcNEcIIoFWbP9HOR z9v3vQwR4e3ksLc2JZOAFK+ssS5XMEoznzpihEP0PLc4dCBYjbvSD7kxgDwZ+Aj8Q9PkbvE9 sIPP7ON0fz095HdThKjiVJe6vofq+n6b1NBc8XdrQvBmunwxD5nvtTW4vtN6VY7mUCmxsCie uoBJ9OlqmsVWQvifIYf40dJPZkk9YgGTzWLpXDSfLSplbY2LL9C9U0ptvjcDjefLTvqSFc7t w1sEhF0n/qpA2r0GpvkLRDmcSwVyPvmjFBGqUp/pNy8ZuPGQmHwFi2/14+xeSUDG2bwnsYJQ G2EdJCB6luQ57GEnTA/yKZSTKI8dDQa8Sd3zfXb19mOgSF0bBdXbuKhEpuP9wirslFe6fQ1t 5j5R0xi72MZ8ikMu1RQZKCyDbMwazlHiMIIHJjCCBg6gAwIBAgIDBNFnMA0GCSqGSIb3DQEB BQUAMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYGA1UEAxMvU3RhcnRDb20g Q2xhc3MgMSBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQgQ0EwHhcNMTIwODI5MjAxNTIz WhcNMTMwODMxMDg0MTExWjBnMRkwFwYDVQQNExBmQ0cxTUdlTUM1dkZVNVlKMSEwHwYDVQQD DBhmcmFuY2sucm91dGllckBheGVnZS5jb20xJzAlBgkqhkiG9w0BCQEWGGZyYW5jay5yb3V0 aWVyQGF4ZWdlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK5kIRjbP769 72PM00wgFczTGqmiU5dAY8XlSziUNq434SJZ3rFZoL0MY6hqVb/p5+u+u6TdhsVywJclPaZE v+FgGtk74JvlX6oeSWJTOiGLTrk0TRwy7Q+80kbneFdhL+yk/ZTxxcj15IEOeWMuyG/IyePq H4GtZMkCpsuCOL5bkq9g/H0JHyLSM0tWDbMuD4vKbSeBkzwiz4pSwuANCFMFeRr3d9iZQU0P VzyKvu/cEUcdoDcVGMuMxX6FwgqrS5c70v/RPM8FafOrqprYfIxVQwxK9IhPgqM9kT6riQo6 OM62d2a21Y6iAeWe/1rssTKn+Stj8jH706LmVJlEGtcCAwEAAaOCA7MwggOvMAkGA1UdEwQC MAAwCwYDVR0PBAQDAgSwMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAdBgNVHQ4E FgQUCfIkqGdMRvMTjM6TIpdcUPqdYW8wHwYDVR0jBBgwFoAUU3Ltkpzg2ssBXHx+ljVO8tS4 UYIwIwYDVR0RBBwwGoEYZnJhbmNrLnJvdXRpZXJAYXhlZ2UuY29tMIICIQYDVR0gBIICGDCC AhQwggIQBgsrBgEEAYG1NwECAjCCAf8wLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cuc3RhcnRz c2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t L2ludGVybWVkaWF0ZS5wZGYwgfcGCCsGAQUFBwICMIHqMCcWIFN0YXJ0Q29tIENlcnRpZmlj YXRpb24gQXV0aG9yaXR5MAMCAQEagb5UaGlzIGNlcnRpZmljYXRlIHdhcyBpc3N1ZWQgYWNj b3JkaW5nIHRvIHRoZSBDbGFzcyAxIFZhbGlkYXRpb24gcmVxdWlyZW1lbnRzIG9mIHRoZSBT dGFydENvbSBDQSBwb2xpY3ksIHJlbGlhbmNlIG9ubHkgZm9yIHRoZSBpbnRlbmRlZCBwdXJw b3NlIGluIGNvbXBsaWFuY2Ugb2YgdGhlIHJlbHlpbmcgcGFydHkgb2JsaWdhdGlvbnMuMIGc BggrBgEFBQcCAjCBjzAnFiBTdGFydENvbSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTADAgEC GmRMaWFiaWxpdHkgYW5kIHdhcnJhbnRpZXMgYXJlIGxpbWl0ZWQhIFNlZSBzZWN0aW9uICJM ZWdhbCBhbmQgTGltaXRhdGlvbnMiIG9mIHRoZSBTdGFydENvbSBDQSBwb2xpY3kuMDYGA1Ud HwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwuc3RhcnRzc2wuY29tL2NydHUxLWNybC5jcmwwgY4G CCsGAQUFBwEBBIGBMH8wOQYIKwYBBQUHMAGGLWh0dHA6Ly9vY3NwLnN0YXJ0c3NsLmNvbS9z dWIvY2xhc3MxL2NsaWVudC9jYTBCBggrBgEFBQcwAoY2aHR0cDovL2FpYS5zdGFydHNzbC5j b20vY2VydHMvc3ViLmNsYXNzMS5jbGllbnQuY2EuY3J0MCMGA1UdEgQcMBqGGGh0dHA6Ly93 d3cuc3RhcnRzc2wuY29tLzANBgkqhkiG9w0BAQUFAAOCAQEAGSGlokCrFniLxjc6W072LqWy ISRKEqeC9u0pYSoQGVPAy1mNbu28ThrfAk8umOfFEDkzVH0TXH33TbsCViwsE/rCk6FC0U+Q AMOn1Ajjf/9z7w8+zCHgmbLyABtYrmBO6AhCD7YLKYPE1VXkJvgdcHCKzVLIkvdIyKSkRn+R lSorTXhg64lR8vQSX8C9EAY0T/hQyjFS9SDcEhsfOjkYdAiG7fVBft24Gj+3oDgk2479W47l phG1aHhkflrDeho0h6LnGxY0+PATPuUkvDsr/RFE2VviGFH9UDxjNJmikrmTibCvS4seQFOm ppHmJzqIcxcn5dqeBDVQYZmLhDkszjGCA90wggPZAgEBMIGUMIGMMQswCQYDVQQGEwJJTDEW MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlm aWNhdGUgU2lnbmluZzE4MDYGA1UEAxMvU3RhcnRDb20gQ2xhc3MgMSBQcmltYXJ5IEludGVy bWVkaWF0ZSBDbGllbnQgQ0ECAwTRZzAJBgUrDgMCGgUAoIICHTAYBgkqhkiG9w0BCQMxCwYJ KoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xMzA0MDUxMzU1MDhaMCMGCSqGSIb3DQEJBDEW BBSoBlJU7N6l0VEsL6YP2H9Oax2zdTBsBgkqhkiG9w0BCQ8xXzBdMAsGCWCGSAFlAwQBKjAL BglghkgBZQMEAQIwCgYIKoZIhvcNAwcwDgYIKoZIhvcNAwICAgCAMA0GCCqGSIb3DQMCAgFA MAcGBSsOAwIHMA0GCCqGSIb3DQMCAgEoMIGlBgkrBgEEAYI3EAQxgZcwgZQwgYwxCzAJBgNV BAYTAklMMRYwFAYDVQQKEw1TdGFydENvbSBMdGQuMSswKQYDVQQLEyJTZWN1cmUgRGlnaXRh bCBDZXJ0aWZpY2F0ZSBTaWduaW5nMTgwNgYDVQQDEy9TdGFydENvbSBDbGFzcyAxIFByaW1h cnkgSW50ZXJtZWRpYXRlIENsaWVudCBDQQIDBNFnMIGnBgsqhkiG9w0BCRACCzGBl6CBlDCB jDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3Vy ZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxODA2BgNVBAMTL1N0YXJ0Q29tIENsYXNz IDEgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50IENBAgME0WcwDQYJKoZIhvcNAQEBBQAE ggEAneeGExI1gJDosPWeAVQcKboybGct14QdD/v3eLv/P+pBpLM0u1GBbZINI9JXsAh5XiIb iSVc8/c4rhfz2hzElyGglBdzQbHPBr7sJU1LuRgCUsMtw+d4luJY8kWrUlWKyviBlWrvEnhE 1VJRbNfh0/ohVDT8yu8D8KGkpODj9h0Qgs5G7/UtfgscLx38jATkyc9XcKukUeTR/KZPimjE zheA5Pu1J4gkroGUdBrY5l3ZijhYLT4f/l1iPRQf9fWaSPoeUiz0WyhTyV5LAOl7bbz1gQM4 twv6C2gydlFzyeVSocwV4nAcwHjtqLm4rB1M6mbjPXsB4ZNr8dV8dqKVwwAAAAAAAA== --------------ms040205090302070308010800--