The branch, master has been updated via f678a45cd2315676f60f28f80f518fa60d8ca3e4 (commit) via 3e0af184341eca03f24bd75a2b0c3057c8fca327 (commit) via b4f4a209c839f965e67b59ca4d9acfe811b0a444 (commit) via 710c7e2dd73209a10d994cd11c9b8ef19fc1f78c (commit) via 8cd8760256925aecc00de01cc0e5bfc987d128b1 (commit) via 4cf5fe79978bb4bbddfc0002c83926cead658587 (commit) via 92be06e6e9bb573addad7a2fcf49ed36e1f4e035 (commit) via 57bea0630acc3d36f7f771a96fb84aebbea1ab3d (commit) via a31b30ba57c2351b44a9adb5289fea5ca13750b2 (commit) via d2255fb9ae57a384e3888df9b9b268ef4f511d19 (commit) via 1c2dbf0cbb4793837701014b66a522727bda144d (commit) via e5157838e52aecb9d8dfdd1a68be3c6049183634 (commit) via dec6f85a06220ae41067a880dc656abe449dda83 (commit) via 41c18f611362d4fce75d3bbc90d3aa101736c47e (commit) via 11cd7afc7bfa67364ea3fd6a8d86f8c9aae85cbe (commit) via 5ce1db5f1ab3a5e2aba960ec082c3b3232d33641 (commit) via b06a443307c46f7df1a7bfabe7f99816fd2c57ba (commit) via e9158da8188ab070640b803610d04e6fe820fa1d (commit) via 38389841d7459abc2fa86d1799add7af432f054d (commit) via 0ca4a5f02e687ebaa1708f1378cdc16ab4f408a7 (commit) via 627e4133c35c120f4270efa2e0d087d6b6fb07c8 (commit) via dd8116cc61e691c99e7462198cd72742bb763e02 (commit) via 99f52e1eddf89dec755c1ebf11189b12441432a9 (commit) via 1aa438539a4a057070270b02c6b2bbaed8a951d9 (commit) via 4073badee28f2af85bf51e22a756aee63bc81d3f (commit) via b7f3d86a413b19b54d86e9aeb2a0a78a9781059c (commit) via e72036b4b19905b011d753fb4b3a9c83a48ed290 (commit) via f578d0dadc28a3f6266b06e34142d3b02de4b499 (commit) via bcce8b276787d760a2a54260af98637c9da254bb (commit) via a502f95af4df692827bb7da2bd2251e3570eb0bc (commit) via 970262c435ef788c44bfa80fe4a106ac49a23bd9 (commit) via 2cd6de464839381594438c08262af85ceeb2903f (commit) via bdefd47ec129e796f2e0e212fe7dc7afab4dc16d (commit) via a7c0c55c7fa9c0ee45cef59245e2572f3c2f1be1 (commit) via 64926ead73dadd10b323712304d72fa86c6a3982 (commit) via 021972892941ac9279e6272addce774779a09374 (commit) via 381e172fcc5913528b058e6af5d95c594bfa51e1 (commit) via 7f1fa1bab02e9b584a358b21fdc121de35a43810 (commit) via ca8a30f7f8406b789489da3997162d0beaa75dba (commit) via a5ff5e860d2b8763f4810199c63a56bb12cbc577 (commit) via d5cb3b69970701eba27a7de98eebf01160bbe9d9 (commit) via 66665f326ae28740ea10939feebe223b702943b8 (commit) via 3fa5e89bb29bb481576a2cf81d3364402bef8dcf (commit) via 11f2c43f11126695b62acae06d7b4641fb068127 (commit) via ce7e6feaf528cdba079f707670818c83e436645f (commit) via b41976e5520c87a066c8da73b7972d8f7c6ff2c0 (commit) via 40a8e4639215fbb780a9df52f8e8fc20726ffa78 (commit) via dfec5a47325d5682bbf5ea5fea2b2f7e176cfee7 (commit) via 997a5ea14c04519abedc1f98c07e6f0d66b35943 (commit) via e116f1d8a9315439451778a75e42e8e60e242fc2 (commit) via 9ed51773204a3370474020a3a586ff6c8664540b (commit) via d7bea4d4ee9d4f6af82528dd6b01ee8e5d2b59e4 (commit) via e1799393f3231f716df17217eca1332441db0914 (commit) via b57fda5b3dff95ba1e5dd396c347d7af50b9f776 (commit) via 7897967c761103cbdaf01c11b9ffcb203c50f27a (commit) via bb8bd55ef6e191129df9bf2b5e286abc8415f4d8 (commit) via 7bc8d8348dbbc75dbd2099e9a1ad4fabf754433e (commit) via c7dd3244c66937311d5c85db0fa4c9bd605cff46 (commit) via c44f28a8289532b5288dcfe8b998581d007d9a77 (commit) via d35ec740a0f2049b41682dff1d482d7f1d408242 (commit) via f777dc3db53b90d9afe8cac02aea90ba3ce5a0ba (commit) via eb18aeeeb291276991b992ce889ce53fd74a5f5e (commit) via 4e22743b379c43e6d26d3e19374f12f2a7a36004 (commit) via abdf808dee7787719e0de139f1013c1301b8c4a1 (commit) via 11a86905415d0a37849221024b0f0a17d459afd2 (commit) via f06cabeca71851821f9b82a7bdbe39be54f6d1d3 (commit) via 0eca09ffff331b7b2a5d9cd4a0fe24e05df6da2f (commit) via 487da6e7af675ff899194486a7d5e8aabbc1b87b (commit) via f2935d56d989cf8b7dc5884e0097088509dafd5e (commit) via e94e42fb73bb3b35ec3452264ee259efc78fcb38 (commit) via 13f0d7a5d57f737a04aa0203cdf4d9b3acd3996f (commit) via a04f592a9258e86e86a337cd6223102e457a5e4c (commit) via 3586bb992f0e6c325207dc55bd01c1f3607f0b31 (commit) via 74a00a110f6d15d24b5b40c02ec8a3916a6acd15 (commit) via b364cfd211f89b6be9abe1dda24d90b4ce590950 (commit) via f36b2e54414baa52b19a591d47b070edca036160 (commit) via a28beb9c1fb4c0bb432961034b90232b24b908f3 (commit) via 82675f778dce0736ddeb5953b4fe9277a6360df2 (commit) via 392d463a8848edb84e2bfb280a3645f458a0af04 (commit) via 6ab10cdf837b9fd24eb9df9404b559d127934167 (commit) via c9e3e708090a02ea8ca6937538d8d077d4914f1c (commit) via 6dbcab261ef2d5e498846cda4cdbd538103a7380 (commit) via 738228a8d838c5d7dadcfcee676a81baa0c43200 (commit) via 08d4e5a5b8b06b5346f12799f8e0da116f65f639 (commit) via a0a4628b11fa8fc89fc3e956fa5c4e5c863c729f (commit) via f7591dd5631dbd2c201147bb7683982888f48a94 (commit) via 59e71a06c0e224d91a6e83ce5e6de2fde82a03b2 (commit) via ab4cca24bcd80cbe61919fc4c288f969a8ef4acd (commit) via fb01897f61cb0aa012da9e3db826684e40ca06f8 (commit) via dd6f936731742582091aa8de9cc2306629d41f4e (commit) via 480fe9f78c92776a41f0e67d60c62947cf910ce3 (commit) via beddd31ec3a0094ecd979e87fbe69418f6a4da50 (commit) via c3d1a8b14a7b05c8afca8413fada57e59106277a (commit) via 7801d550180c2003862568e9ac706056544fe53e (commit) via 682ceb66c1b7e2fa6f60d541d35dbe7bbeb52277 (commit) via bf9469ec189998671c27cb1717c6f5dd9c5a0df2 (commit) via b57bc2ff5d4417a7affd4a8e9cef6041bdba57e1 (commit) via 1bf994d73f98500b34f9e701bb7f47f0d60bd682 (commit) via 024d4adc27c2b41faa66913ded839731c717783f (commit) via 382c020a85a24e6634ede3b07a1c6daefdcd2bd7 (commit) via 26038eb6b5263f34e542611d3b667079e81f4b91 (commit) via e8a0602f7bf04d79ee28f8de87250c60fd5937b4 (commit) via c3974ea3b616281937ea21b6d2af5606ffe4237b (commit) via 44907283fc3fef3e8fc5c2da5390767daf7b3b70 (commit) via 26483ccc19f14073882e28ccc81e9d24f626401a (commit) via a445d94ee09d33fe9ab87851065b89bb664097e4 (commit) via ff0081bb7a95782845fe81b72310194733d9b574 (commit) via b1b4e6389d60e6ba588ac7fbbb7b91557e13aaa4 (commit) via 19ec26904b42f466ed18f64d915321374b9f9fec (commit) via 9ba2650bc636226bf7cee5558b5df1b82b52e49b (commit) via 35843439dfdabd7bb65ebafd2c832bcc60ff6140 (commit) via 0266ddd7bd66c4c0baf021e3b9bc0652f71dc51f (commit) via da63d2cb1392008c8cc1dc03d44d41e024d6e698 (commit) via e3a4f6d95aba63312c874bb499d61cd616be7d81 (commit) via 29070219a949e217936c8d1b69da0b4774e643e1 (commit) via 7ef98dc9a298c1ac90fbae9aa5f3221c33c2078f (commit) via 7255ec21004d6453d3fe0f9b7f6176fa321ac96e (commit) via 04fef01fd7aaca08511fed2600b539ef8c64825a (commit) via 7b1976d14dd6580d0ab660eeb2eeda557ac140c8 (commit) via be6e21009453a1e08e1af0f693a5419c12a31802 (commit) via 96c5c6dbc6f20be109ff3551f2849b6feeec0310 (commit) via a3b1000b43a2c2dc4df30ee02abe01475d516d69 (commit) via 713bf220791e9fec6526f821c4f25a2f97fd600a (commit) via 83117b18d715ae51e47bc988e5d2c40c88ee1dc8 (commit) via 3bde595666bf7cdcc8b28738d5396f8a8258af90 (commit) via c734e1fd14094c2545c8305e35358e57cf485ab7 (commit) via 28ae930a71c02c3e05408b9aebd761a23399b567 (commit) via 14ab81248cd8eb4cff5de4d9a3b1d0f0755bd3f5 (commit) via b00eb8f29c1616e71417c02582e081e679434548 (commit) via 3eaff6afb63246045bddd1977c93591b210932d6 (commit) via 6553cdd66307f85b99e37fa5b31218e872b0b633 (commit) via d4d647e169202056886abb3591c7efb21c7f13cc (commit) via 7d99d57ccafc9be02f34def4b44de33da6731de5 (commit) via e38b5cd4ffc534a19f7f339f96b0e2197b02363c (commit) via 9365825f52b3629820e11a963f83fe68925413f3 (commit) via 3aaaf33afa218f916e3259d306acb33f054d7cfb (commit) via a7ba0fd74af1ca9d0aa73fd93cf23d8654a42dd5 (commit) via c2b06f0a11522d5b61b30de932d018f979b87fad (commit) via 2977b7160998acff8cab236bf9a08b6fb60b9773 (commit) via 5951bd9373e4ee9ba2a48ac639fc2aae05fe8c98 (commit) via 53b29d25d24004d1bf7db146af61e3782316ae35 (commit) via 2e01d01b3227ffed9b5329b4320440e35ece04c7 (commit) via 2444ad6d20ea70f6ea03d0996ff5d3bfb204e13d (commit) via 4273c602c83d819af9e364b2d539eff05367e916 (commit) via 30b85be0a2d4d8b45ae386b2392e7c6e787729b8 (commit) via 6eb6a9930001f6d0c38102d2aec51b984a19a002 (commit) via ae429136292a1b52a149b4d34409eae9af22f9dd (commit) via 693da24c95ea98ca8dd1908edab52f7c168ac362 (commit) via 12f70e8938cd9e3c76e878669d3de4bf4cb725ec (commit) via d607fa3e5cca1bd9c8e1817db81e9a281cf68610 (commit) via 76dde71244cd0ea888feea902e217487a5d240f8 (commit) via 2c97f4b326c29aa07b6d87c62e796829fb5072d1 (commit) via 2ceb7588b52ad54a954d6fa137ad35073673fab0 (commit) via a5342c70eabee89c27da6cf5b033b24125b235ba (commit) via 17f8e161413a00bc677f16425803109c3536db79 (commit) via e8b144da1188af7cc1212dbaa97cf6723eb44b0a (commit) via b35cd1b40fa6432600299a0c69f5620609db4791 (commit) via 6cca81e04d631aa880a3069f1931f685ca01ce81 (commit) via f77886d1a0e030267813d557bd1927405c863681 (commit) via 50e0a41aa314c12059032d009512397e23f5781d (commit) via 4b344cb40ba4d9d55c82b9569cb8b85cecfd1f38 (commit) via 7737607582abef979f7a1c834b96114b2488cf65 (commit) via 681b61211035b98fe6cc28cef113ad1c3d777598 (commit) via a515aed0fd3a17c4a314800077f8cdb5bdc5e102 (commit) via 96f3b37fc1d113c1ed17d06687333d6fdc785b36 (commit) via a56d77fb675e7cb3813f689b860b88ce89a548fb (commit) via 26ec25b65e1cec25e680c9b53c715f4c890f3590 (commit) via 08da1557e2d95be41ef3d2821da3dc0bcfee214d (commit) via cdaa1ff10125e57e12e9632c36364682317af52a (commit) via 1df2a890e15944c70d3c0afc7fa6337c38b30cf7 (commit) via 121cd6263bc64c09ff95bb72b917fbc20f410cf1 (commit) via 10c7353c3ce58b5dc1bee1ac03440050cd0536f9 (commit) via 52df66878c381fe2f2cb0883812ea3cf36105370 (commit) via 940042c6b37b4b93788256395df2c27824a271cb (commit) via 946cc6a5599d20133273bdd3846577b6d4817b8e (commit) via 56768f5f4c7c5379f277b3e17e607f1f163d21c2 (commit) via 33255a189cc532a5d7c4d1051e685816245f95db (commit) via dc2a298b7a2ac5cf257b984191a0c92a192e1bff (commit) via bd543f90e8d8488df6b03f55206c23e1cedda405 (commit) via 9f59de61673ae4472970862f75522e76b800dc14 (commit) via add6c6325c238cdca23ce0212c77b474535080cb (commit) via 1220eafa89f1d801bdde4703a2bc20cb3077e1a9 (commit) via e51a48a3fae101a51cbaa896ca06844f8b74d4ab (commit) via 97d5588d2b702bfe4070575cb5f639839982815e (commit) via cafbefd51871dd52dfd4c7ed6ce9eef6daefa6f5 (commit) via d5f3636a5da766c9d1ec75598453b430d56e6dc7 (commit) via b7b76d6519b812198f1b892d0b4d602466e9608b (commit) via 8259510361555ffb14e24aa553f5c5618f659a03 (commit) via d3ea25c159dcb4ea02d00d771d6b2e5ab8480369 (commit) via 2b202c04cebbd267ba97838c8dce091d6e7b1299 (commit) via 86d5ae26972a11c1a09c99b3bb3e5395cf24769b (commit) via 83b81dc242a54194779fdb8d5ac3bf41d6749709 (commit) via dd5324c05a71f4ca9a8d1a35e7c88cb5e54acdca (commit) via 539e8b26b3b39ced278239f6fc7d31f2c3bafddb (commit) via fb5d25221bed2d4c5222dcc56057a6c9b645ee78 (commit) via 3c9ef40d1e59549eea5d60094a4544479689dc3d (commit) via 5ef58661f1563b694320b0a7559b8093d11fcb9d (commit) via e69c721789dd2f8b64407c600c454ed4c8d8f784 (commit) via 05c8dbee779b1fb4de656c4b1262bcc6eb65944c (commit) via 05b987cff0649e924d9f7aba633c01e3f05f48f7 (commit) via e36a54ad27c1bcb19c4e9a981a2b4c4d699d0f50 (commit) via b9d37f27d2f3eb70f6ef0d2fb50d6eb955a8a2ea (commit) via 4e090e16474e1bfed2dafe027eaefbaf0a7a788a (commit) via ee72f556aa0fee258c2da0fbf9f35cf18d3ba578 (commit) via 0a89f07978b9f26286947c379883f686ce556126 (commit) via 8e24b87ad77f5218c2d2c1cdc1468bc6b4c021ec (commit) via 3c200767851be47ea5d3bccb6bdfc8a82c163020 (commit) via 9c170511179a721198527f063a58ab1b031b1b93 (commit) via 7d3cd879a496adc27e5e827ef3e35f7633a827de (commit) via 4700907a5bd21e22f69f6a4af91e9e6a86f6803c (commit) via 7fb709c215a0a7909baee4226f0c10b2b4052963 (commit) via be748a7d84dd51edd1143c46baeeca7ab94863ba (commit) via abd6b3b5cc53c4cb1f59d63c83dbdbf6c42a81d4 (commit) via 3ff9e701b1a2d872fff60f3febf330bcf94b05cf (commit) via b4bfa7f155fce163557f726563908b238f32e005 (commit) via 602b5d03eee1c62b04d5b59c556cc0b73dcfe9c5 (commit) via 0f49267fd7204e8d40f025154e31bb377b491071 (commit) via 7e63fd4573d801985587ff55b22f17b79bae00b9 (commit) via 7ac599da262d16b1bd80b4e1ef8c7162c807053a (commit) via 423b45f6b22563b7e7b76ad48ca081ae578851ad (commit) via 397a44fee9e49e99ee00384c9ecccd4bd64f4cc6 (commit) via 52d44758eaabbfffae7ed6a32ece04b087c2e67f (commit) via 7bf17c184317f13f66c244700c4c6af8776b552f (commit) via 80485250f07a13224a59e7222afccee53d8cac7f (commit) via ddcc47032058af7a7ed47b7e5e2a43b6f29d8dc0 (commit) via 315e35c077e1b21d0f9798a43ccdb2dfa5071500 (commit) from e13aab10879ecf1af6541d8abd0ff9a1d2154537 (commit)
- Log ----------------------------------------------------------------- commit f678a45cd2315676f60f28f80f518fa60d8ca3e4 Merge: 3e0af18 e13aab1 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Aug 24 21:40:52 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: libraries/database_interface.lib.php
commit 3e0af184341eca03f24bd75a2b0c3057c8fca327 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Aug 24 13:24:21 2011 +0200
Fix indentation broken by past merges
commit b4f4a209c839f965e67b59ca4d9acfe811b0a444 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Aug 24 12:58:40 2011 +0200
PMA_getServerType() - recognize Percona Server
commit 710c7e2dd73209a10d994cd11c9b8ef19fc1f78c Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Aug 24 12:53:13 2011 +0200
Print server_comment after server software version
commit 8cd8760256925aecc00de01cc0e5bfc987d128b1 Author: Piotr Przybylski piotrprz@gmail.com Date: Tue Aug 23 22:48:14 2011 +0200
Create PMA_is_system_schema() function which checks whether current database server treats it as a system schema
commit 4cf5fe79978bb4bbddfc0002c83926cead658587 Author: Piotr Przybylski piotrprz@gmail.com Date: Tue Aug 23 22:37:24 2011 +0200
Exclude data_dictionary from server synchronize (Drizzle)
commit 92be06e6e9bb573addad7a2fcf49ed36e1f4e035 Author: Piotr Przybylski piotrprz@gmail.com Date: Tue Aug 23 22:25:14 2011 +0200
Better comment
commit 57bea0630acc3d36f7f771a96fb84aebbea1ab3d Author: Piotr Przybylski piotrprz@gmail.com Date: Tue Aug 23 22:14:15 2011 +0200
Use PMA_DBI_get_table_indexes_sql() only when really needed, in all other cases use PMA_DBI_get_table_indexes()
commit a31b30ba57c2351b44a9adb5289fea5ca13750b2 Merge: d2255fb cae0366 Author: Piotr Przybylski piotrprz@gmail.com Date: Tue Aug 23 21:56:33 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit d2255fb9ae57a384e3888df9b9b268ef4f511d19 Merge: 1c2dbf0 98112c5 Author: Piotr Przybylski piotrprz@gmail.com Date: Mon Aug 22 15:19:50 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit 1c2dbf0cbb4793837701014b66a522727bda144d Merge: e515783 c5eb1f4 Author: Piotr Przybylski piotrprz@gmail.com Date: Mon Aug 22 11:18:26 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: libraries/advisory_rules.txt
commit e5157838e52aecb9d8dfdd1a68be3c6049183634 Merge: dec6f85 9b2570b Author: Piotr Przybylski piotrprz@gmail.com Date: Sat Aug 20 01:03:11 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit dec6f85a06220ae41067a880dc656abe449dda83 Author: Piotr Przybylski piotrprz@gmail.com Date: Sat Aug 20 00:49:22 2011 +0200
Advisor: don't run 'MyISAM concurrent inserts' on Drizzle
commit 41c18f611362d4fce75d3bbc90d3aa101736c47e Merge: 11cd7af 80daf34 Author: Piotr Przybylski piotrprz@gmail.com Date: Sat Aug 20 00:48:40 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: libraries/Table.class.php libraries/Tracker.class.php
commit 11cd7afc7bfa67364ea3fd6a8d86f8c9aae85cbe Author: Piotr Przybylski piotrprz@gmail.com Date: Sat Aug 20 00:39:52 2011 +0200
Advisor: add exceptions for Drizzle
commit 5ce1db5f1ab3a5e2aba960ec082c3b3232d33641 Author: Piotr Przybylski piotrprz@gmail.com Date: Sat Aug 20 00:37:35 2011 +0200
Advisor: add Com_* variables in Drizzle
commit b06a443307c46f7df1a7bfabe7f99816fd2c57ba Author: Piotr Przybylski piotrprz@gmail.com Date: Sat Aug 20 00:37:02 2011 +0200
Code indentation
commit e9158da8188ab070640b803610d04e6fe820fa1d Author: Piotr Przybylski piotrprz@gmail.com Date: Sat Aug 20 00:36:41 2011 +0200
Add MYSQLI_TYPE_VARCHAR to mysqli dbi (required for Drizzle)
commit 38389841d7459abc2fa86d1799add7af432f054d Merge: 0ca4a5f 5e860f1 Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Aug 19 19:37:34 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit 0ca4a5f02e687ebaa1708f1378cdc16ab4f408a7 Merge: 627e413 d7e4004 Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Aug 19 15:56:26 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: db_search.php libraries/Table.class.php libraries/schema/Pdf_Relation_Schema.class.php libraries/schema/User_Schema.class.php libraries/tbl_select.lib.php server_status.php tbl_change.php
commit 627e4133c35c120f4270efa2e0d087d6b6fb07c8 Merge: dd8116c 07f3f59 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Aug 17 22:47:20 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: themes/original/css/theme_right.css.php
commit dd8116cc61e691c99e7462198cd72742bb763e02 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Aug 17 17:01:11 2011 +0200
Two more fixes for Tracking in Drizzle
commit 99f52e1eddf89dec755c1ebf11189b12441432a9 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Aug 17 16:50:00 2011 +0200
A few missing fixes for Tracking
commit 1aa438539a4a057070270b02c6b2bbaed8a951d9 Merge: 4073bad 79b5bd6 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Aug 17 16:39:43 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: libraries/common.lib.php libraries/config.default.php server_synchronize.php
commit 4073badee28f2af85bf51e22a756aee63bc81d3f Merge: b7f3d86 8c4530e Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Aug 17 00:01:05 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit b7f3d86a413b19b54d86e9aeb2a0a78a9781059c Author: Piotr Przybylski piotrprz@gmail.com Date: Tue Aug 16 22:14:24 2011 +0200
Make tracking compatible with Drizzle Simulate SET type by bit flags
commit e72036b4b19905b011d753fb4b3a9c83a48ed290 Author: Piotr Przybylski piotrprz@gmail.com Date: Tue Aug 16 20:02:23 2011 +0200
No need to use PMA_DBI_get_table_indexes_sql() here, use PMA_DBI_get_table_indexes()
commit f578d0dadc28a3f6266b06e34142d3b02de4b499 Merge: bcce8b2 7118468 Author: Piotr Przybylski piotrprz@gmail.com Date: Tue Aug 16 19:58:16 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit bcce8b276787d760a2a54260af98637c9da254bb Author: Piotr Przybylski piotrprz@gmail.com Date: Tue Aug 16 16:13:52 2011 +0200
Credits in docs
commit a502f95af4df692827bb7da2bd2251e3570eb0bc Merge: 970262c 79f7461 Author: Piotr Przybylski piotrprz@gmail.com Date: Tue Aug 16 16:11:43 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit 970262c435ef788c44bfa80fe4a106ac49a23bd9 Merge: 2cd6de4 e19d93a Author: Piotr Przybylski piotrprz@gmail.com Date: Mon Aug 15 12:03:04 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit 2cd6de464839381594438c08262af85ceeb2903f Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Aug 12 22:08:07 2011 +0200
Update create_tables_drizzle.sql
commit bdefd47ec129e796f2e0e212fe7dc7afab4dc16d Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Aug 12 22:05:09 2011 +0200
Use PMA_DBI_get_columns_sql (completes latest merge)
commit a7c0c55c7fa9c0ee45cef59245e2572f3c2f1be1 Merge: 64926ea 9147f30 Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Aug 12 22:02:40 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: js/server_status.js libraries/common.lib.php tbl_printview.php tbl_select.php tbl_structure.php
commit 64926ead73dadd10b323712304d72fa86c6a3982 Merge: 0219728 db29c02 Author: Piotr Przybylski piotrprz@gmail.com Date: Sat Aug 6 13:10:25 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit 021972892941ac9279e6272addce774779a09374 Merge: 381e172 eb66564 Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Aug 5 22:48:03 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit 381e172fcc5913528b058e6af5d95c594bfa51e1 Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Aug 5 18:13:03 2011 +0200
Synchronize: * Detect Drizzle servers * disallow connections with incompatible protocols, these can't work with DBI functions defined in global namespace
commit 7f1fa1bab02e9b584a358b21fdc121de35a43810 Merge: ca8a30f efa788d Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Aug 5 17:17:47 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: js/server_status.js libraries/database_interface.lib.php libraries/mysql_charsets.lib.php
commit ca8a30f7f8406b789489da3997162d0beaa75dba Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Aug 5 01:24:02 2011 +0200
Fix usage of PMA_DBI_get_columns
commit a5ff5e860d2b8763f4810199c63a56bb12cbc577 Merge: d5cb3b6 4965898 Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Aug 5 01:18:56 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: libraries/database_interface.lib.php tbl_structure.php
commit d5cb3b69970701eba27a7de98eebf01160bbe9d9 Merge: 66665f3 c64564b Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Aug 5 00:52:47 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: libraries/server_synchronize.lib.php
commit 66665f326ae28740ea10939feebe223b702943b8 Merge: 3fa5e89 4c62a5f Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Aug 4 20:19:43 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: db_qbe.php js/server_status.js libraries/export/xml.php libraries/schema/Pdf_Relation_Schema.class.php tbl_printview.php tbl_structure.php
commit 3fa5e89bb29bb481576a2cf81d3364402bef8dcf Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Aug 4 14:14:05 2011 +0200
Drizzle DBI: default to fully buffered query, like in mysql and mysqli
commit 11f2c43f11126695b62acae06d7b4641fb068127 Merge: ce7e6fe 95e90bb Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Aug 3 23:58:48 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit ce7e6feaf528cdba079f707670818c83e436645f Merge: b41976e 54fbcaa Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Aug 3 00:25:43 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: libraries/export/htmlword.php libraries/export/latex.php libraries/export/odt.php libraries/export/sql.php libraries/export/texytext.php libraries/export/xml.php
commit b41976e5520c87a066c8da73b7972d8f7c6ff2c0 Author: Piotr Przybylski piotrprz@gmail.com Date: Tue Aug 2 01:36:57 2011 +0200
Drizzle: Respect MaxCharactersInDisplayedSQL in process list on Server Status page
commit 40a8e4639215fbb780a9df52f8e8fc20726ffa78 Merge: dfec5a4 3a373b4 Author: Piotr Przybylski piotrprz@gmail.com Date: Tue Aug 2 01:29:22 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit dfec5a47325d5682bbf5ea5fea2b2f7e176cfee7 Merge: 997a5ea 19172fb Author: Piotr Przybylski piotrprz@gmail.com Date: Mon Aug 1 18:05:53 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit 997a5ea14c04519abedc1f98c07e6f0d66b35943 Author: Piotr Przybylski piotrprz@gmail.com Date: Mon Aug 1 18:03:33 2011 +0200
Comment change
commit e116f1d8a9315439451778a75e42e8e60e242fc2 Author: Piotr Przybylski piotrprz@gmail.com Date: Mon Aug 1 13:38:14 2011 +0200
Change wording on home page: * 'MySQL/Drizzle client version' to 'Database client version' * remove PHP extension version, mysqli and drizzle are still at 0.1 so it makes no sense * 'Server type' to 'Software', 'Server version' to 'Software version'
commit 9ed51773204a3370474020a3a586ff6c8664540b Author: Piotr Przybylski piotrprz@gmail.com Date: Mon Aug 1 13:35:30 2011 +0200
Drizzle dbi - PMA_DBI_get_client_info should return Drizzle version it was built for
commit d7bea4d4ee9d4f6af82528dd6b01ee8e5d2b59e4 Merge: e179939 8824da9 Author: Piotr Przybylski piotrprz@gmail.com Date: Sun Jul 31 17:26:18 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit e1799393f3231f716df17217eca1332441db0914 Author: Piotr Przybylski piotrprz@gmail.com Date: Sun Jul 31 00:50:58 2011 +0200
Validation for drizzle module in setup script Untested and currently unused, it's too unsafe to allow users to choose it
commit b57fda5b3dff95ba1e5dd396c347d7af50b9f776 Merge: 7897967 e3b91b7 Author: Piotr Przybylski piotrprz@gmail.com Date: Sun Jul 31 00:46:49 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit 7897967c761103cbdaf01c11b9ffcb203c50f27a Author: Piotr Przybylski piotrprz@gmail.com Date: Sat Jul 30 22:38:46 2011 +0200
Drizzle dbi: * fix PMA_DrizzleResult::fetchRow with FETCH_BOTH * add method call logging
commit bb8bd55ef6e191129df9bf2b5e286abc8415f4d8 Author: Piotr Przybylski piotrprz@gmail.com Date: Sat Jul 30 22:02:25 2011 +0200
Better strings on home page
commit 7bc8d8348dbbc75dbd2099e9a1ad4fabf754433e Author: Piotr Przybylski piotrprz@gmail.com Date: Sat Jul 30 21:51:14 2011 +0200
Drizzle dbi - segfault suddenly disappeared from there so use proper code
commit c7dd3244c66937311d5c85db0fa4c9bd605cff46 Author: Piotr Przybylski piotrprz@gmail.com Date: Sat Jul 30 21:45:23 2011 +0200
Drizzle dbi - PMA_DBI_get_host_info - work around a segfault
commit c44f28a8289532b5288dcfe8b998581d007d9a77 Author: Piotr Przybylski piotrprz@gmail.com Date: Sat Jul 30 18:49:47 2011 +0200
Fix affectedRows for drizzle dbi, circumvent a few drizzle module segfaults related to resource freeing
commit d35ec740a0f2049b41682dff1d482d7f1d408242 Author: Piotr Przybylski piotrprz@gmail.com Date: Sat Jul 30 18:47:02 2011 +0200
Marked drizzle dbi as experimental
commit f777dc3db53b90d9afe8cac02aea90ba3ce5a0ba Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Jul 29 17:16:19 2011 +0200
Work around some segfaults in drizzle extension, still some segfaults left Version 0.5 of PHP extension is definitely not production ready
commit eb18aeeeb291276991b992ce889ce53fd74a5f5e Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Jul 29 17:14:22 2011 +0200
Remove debug code
commit 4e22743b379c43e6d26d3e19374f12f2a7a36004 Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Jul 28 22:46:40 2011 +0200
A few bugfixes for drizzle dbi
commit abdf808dee7787719e0de139f1013c1301b8c4a1 Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Jul 28 22:46:19 2011 +0200
Correctly detect drizzle extension
commit 11a86905415d0a37849221024b0f0a17d459afd2 Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Jul 28 19:21:18 2011 +0200
database interface files for drizzle PHP extension
commit f06cabeca71851821f9b82a7bdbe39be54f6d1d3 Merge: 0eca09f c326cfe Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Jul 28 13:33:44 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit 0eca09ffff331b7b2a5d9cd4a0fe24e05df6da2f Merge: 487da6e e82682d Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jul 27 20:10:38 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: libraries/dbi/mysqli.dbi.lib.php
commit 487da6e7af675ff899194486a7d5e8aabbc1b87b Author: Piotr Przybylski piotrprz@gmail.com Date: Mon Jul 25 22:00:44 2011 +0200
Use $logAnalyseDialog instead of multiple lookups for $('#logAnalyseDialog')
commit f2935d56d989cf8b7dc5884e0097088509dafd5e Merge: e94e42f 489e8f1 Author: Piotr Przybylski piotrprz@gmail.com Date: Mon Jul 25 21:55:16 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: js/server_status.js server_status.php
commit e94e42fb73bb3b35ec3452264ee259efc78fcb38 Merge: 13f0d7a 7e197b6 Author: Piotr Przybylski piotrprz@gmail.com Date: Sat Jul 23 23:33:19 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit 13f0d7a5d57f737a04aa0203cdf4d9b3acd3996f Merge: a04f592 2dee226 Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Jul 22 14:13:11 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit a04f592a9258e86e86a337cd6223102e457a5e4c Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Jul 22 13:39:23 2011 +0200
Don't use DEFAULT CHARACTER SET when creating tables during import (Drizzle)
commit 3586bb992f0e6c325207dc55bd01c1f3607f0b31 Merge: 74a00a1 d8f6e7d Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Jul 22 11:07:04 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: db_structure.php libraries/database_interface.lib.php libraries/server_synchronize.lib.php server_status.php sql.php
commit 74a00a110f6d15d24b5b40c02ec8a3916a6acd15 Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Jul 21 23:23:34 2011 +0200
Drizzle has no usable query log, hide appropriate features in Server Status
commit b364cfd211f89b6be9abe1dda24d90b4ce590950 Merge: f36b2e5 49b2ca9 Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Jul 21 22:56:21 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit f36b2e54414baa52b19a591d47b070edca036160 Merge: a28beb9 ba395f5 Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Jul 21 16:21:16 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: libraries/db_links.inc.php libraries/server_links.inc.php tbl_structure.php themes/pmahomme/css/theme_right.css.php
commit a28beb9c1fb4c0bb432961034b90232b24b908f3 Merge: 82675f7 938e807 Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Jul 21 15:25:52 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: libraries/server_synchronize.lib.php server_status.php
commit 82675f778dce0736ddeb5953b4fe9277a6360df2 Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Jul 21 11:27:28 2011 +0200
Server status: use Questions variable (Drizzle)
commit 392d463a8848edb84e2bfb280a3645f458a0af04 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jul 20 18:54:59 2011 +0200
Fix merged file
commit 6ab10cdf837b9fd24eb9df9404b559d127934167 Merge: c9e3e70 75bb94f Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jul 20 18:53:14 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit c9e3e708090a02ea8ca6937538d8d077d4914f1c Merge: 6dbcab2 e386d58 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jul 20 18:45:00 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: server_status.php
commit 6dbcab261ef2d5e498846cda4cdbd538103a7380 Merge: 738228a 4ee15be Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jul 20 18:23:21 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: server_status.php
commit 738228a8d838c5d7dadcfcee676a81baa0c43200 Author: Piotr Przybylski piotrprz@gmail.com Date: Mon Jul 18 23:35:32 2011 +0200
Import: don't use DEFAULT CHARACTER SET in db creation (Drizzle)
commit 08d4e5a5b8b06b5346f12799f8e0da116f65f639 Merge: a0a4628 1b56916 Author: Piotr Przybylski piotrprz@gmail.com Date: Mon Jul 18 22:20:33 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: libraries/export/htmlword.php
commit a0a4628b11fa8fc89fc3e956fa5c4e5c863c729f Merge: f7591dd 291e3b6 Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Jul 14 22:38:20 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: libraries/export/latex.php libraries/export/odt.php libraries/export/texytext.php libraries/export/xml.php
commit f7591dd5631dbd2c201147bb7683982888f48a94 Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Jul 14 00:57:19 2011 +0200
Fix SQL export
commit 59e71a06c0e224d91a6e83ce5e6de2fde82a03b2 Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Jul 14 00:40:15 2011 +0200
Quick fixes for XML export
commit ab4cca24bcd80cbe61919fc4c288f969a8ef4acd Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Jul 14 00:40:01 2011 +0200
There are no triggers in Drizzle
commit fb01897f61cb0aa012da9e3db826684e40ca06f8 Merge: dd6f936 d84d51c Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Jul 14 00:30:39 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit dd6f936731742582091aa8de9cc2306629d41f4e Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jul 13 20:57:05 2011 +0200
Make PMA_DBI_get_triggers aware that Drizzle doesn't have triggers
commit 480fe9f78c92776a41f0e67d60c62947cf910ce3 Merge: beddd31 f57faf6 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jul 13 17:37:50 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit beddd31ec3a0094ecd979e87fbe69418f6a4da50 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jul 13 17:00:42 2011 +0200
Make PMA_DBI_getCompatibilities() aware of Drizzle - it doesn't have SQL_MODE
commit c3d1a8b14a7b05c8afca8413fada57e59106277a Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jul 13 16:59:22 2011 +0200
Ignore SkipLockedTables (Drizzle)
commit 7801d550180c2003862568e9ac706056544fe53e Merge: 682ceb6 e7a4453 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jul 13 14:05:24 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit 682ceb66c1b7e2fa6f60d541d35dbe7bbeb52277 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jul 13 12:28:23 2011 +0200
Removed SOUNDEX function (Drizzle) It's never been supported, Drizzle docs are wrong
commit bf9469ec189998671c27cb1717c6f5dd9c5a0df2 Merge: b57bc2f 0ebd961 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jul 13 12:25:06 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit b57bc2ff5d4417a7affd4a8e9cef6041bdba57e1 Merge: 1bf994d 4bb11fd Author: Piotr Przybylski piotrprz@gmail.com Date: Mon Jul 11 19:41:21 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit 1bf994d73f98500b34f9e701bb7f47f0d60bd682 Author: Piotr Przybylski piotrprz@gmail.com Date: Sat Jul 9 22:08:32 2011 +0200
Try to cast default values for BOOLEAN columns to TRUE/FALSE Required for Drizzle, adds more correct values for MySQL
commit 024d4adc27c2b41faa66913ded839731c717783f Author: Piotr Przybylski piotrprz@gmail.com Date: Sat Jul 9 21:52:33 2011 +0200
UUID has no length
commit 382c020a85a24e6634ede3b07a1c6daefdcd2bd7 Merge: 26038eb 2c4c45a Author: Piotr Przybylski piotrprz@gmail.com Date: Sat Jul 9 21:50:23 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit 26038eb6b5263f34e542611d3b667079e81f4b91 Author: Piotr Przybylski piotrprz@gmail.com Date: Sat Jul 9 17:59:49 2011 +0200
Fix page height Optimize selector
commit e8a0602f7bf04d79ee28f8de87250c60fd5937b4 Author: Piotr Przybylski piotrprz@gmail.com Date: Sat Jul 9 17:33:45 2011 +0200
Sortable columns in plugin list
commit c3974ea3b616281937ea21b6d2af5606ffe4237b Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Jul 8 19:55:35 2011 +0200
Fix anchors in plugin list
commit 44907283fc3fef3e8fc5c2da5390767daf7b3b70 Merge: 26483cc 5ce96bc Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Jul 8 19:50:42 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit 26483ccc19f14073882e28ccc81e9d24f626401a Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Jul 8 19:46:19 2011 +0200
Better plugin list
commit a445d94ee09d33fe9ab87851065b89bb664097e4 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jul 6 19:08:23 2011 +0200
Function list and column types for Drizzle
commit ff0081bb7a95782845fe81b72310194733d9b574 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jul 6 19:06:51 2011 +0200
Rename pk_char36 to FUNC_UUID
commit b1b4e6389d60e6ba588ac7fbbb7b91557e13aaa4 Merge: 19ec269 66158f6 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jul 6 18:31:38 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: libraries/server_synchronize.lib.php
commit 19ec26904b42f466ed18f64d915321374b9f9fec Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jul 6 18:22:55 2011 +0200
Revert "Provide proper function list in Insert dropdowns and proper column types in field type dropdowns (Drizzle)"
This reverts commit 35843439dfdabd7bb65ebafd2c832bcc60ff6140.
commit 9ba2650bc636226bf7cee5558b5df1b82b52e49b Author: Piotr Przybylski piotrprz@gmail.com Date: Sun Jul 3 01:48:32 2011 +0200
Don't offer FULLTEXT in table creation form (Drizzle)
commit 35843439dfdabd7bb65ebafd2c832bcc60ff6140 Author: Piotr Przybylski piotrprz@gmail.com Date: Sun Jul 3 01:47:03 2011 +0200
Provide proper function list in Insert dropdowns and proper column types in field type dropdowns (Drizzle)
commit 0266ddd7bd66c4c0baf021e3b9bc0652f71dc51f Merge: da63d2c 6d88345 Author: Piotr Przybylski piotrprz@gmail.com Date: Sun Jul 3 00:41:31 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: libraries/database_interface.lib.php
commit da63d2cb1392008c8cc1dc03d44d41e024d6e698 Merge: e3a4f6d d5dd8a2 Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Jul 1 20:52:25 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: libraries/database_interface.lib.php
commit e3a4f6d95aba63312c874bb499d61cd616be7d81 Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Jun 30 18:54:45 2011 +0200
Fix PMA_DBI_get_columns when $column parameter is used and UNI key is promoted to PRI
commit 29070219a949e217936c8d1b69da0b4774e643e1 Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Jun 30 16:41:48 2011 +0200
Fix comments
commit 7ef98dc9a298c1ac90fbae9aa5f3221c33c2078f Merge: 7255ec2 cbf00bc Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Jun 30 00:52:01 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit 7255ec21004d6453d3fe0f9b7f6176fa321ac96e Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Jun 30 00:48:19 2011 +0200
Change PMA_DBI_get_columns() to always return complex descriptions, never simple column list (it was needed for one case anyway) Bugfixes
commit 04fef01fd7aaca08511fed2600b539ef8c64825a Author: Piotr Przybylski piotrprz@gmail.com Date: Tue Jun 28 23:34:01 2011 +0200
Properly compute 'Extra' in PMA_DBI_get_columns_sql (Drizzle)
commit 7b1976d14dd6580d0ab660eeb2eeda557ac140c8 Author: Piotr Przybylski piotrprz@gmail.com Date: Tue Jun 28 23:33:09 2011 +0200
Don't show "Propose table structure" link (Drizzle)
commit be6e21009453a1e08e1af0f693a5419c12a31802 Author: Piotr Przybylski piotrprz@gmail.com Date: Tue Jun 28 23:13:05 2011 +0200
Use new PMA_DBI_get_columns in column alter form
commit 96c5c6dbc6f20be109ff3551f2849b6feeec0310 Author: Piotr Przybylski piotrprz@gmail.com Date: Tue Jun 28 23:07:52 2011 +0200
Add $column parameter to PMA_DBI_get_columns
commit a3b1000b43a2c2dc4df30ee02abe01475d516d69 Author: Piotr Przybylski piotrprz@gmail.com Date: Tue Jun 28 18:36:51 2011 +0200
Fix database search
commit 713bf220791e9fec6526f821c4f25a2f97fd600a Author: Piotr Przybylski piotrprz@gmail.com Date: Tue Jun 28 17:47:47 2011 +0200
Drizzle has no CONVERT and everything is utf-8
commit 83117b18d715ae51e47bc988e5d2c40c88ee1dc8 Author: Piotr Przybylski piotrprz@gmail.com Date: Mon Jun 27 23:59:04 2011 +0200
Use PMA_sqlAddSlashes from recent merge
commit 3bde595666bf7cdcc8b28738d5396f8a8258af90 Merge: c734e1f 49a3978 Author: Piotr Przybylski piotrprz@gmail.com Date: Mon Jun 27 23:55:32 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit c734e1fd14094c2545c8305e35358e57cf485ab7 Author: Piotr Przybylski piotrprz@gmail.com Date: Sun Jun 26 21:26:49 2011 +0200
Workaround for brokwn ROW_FORMAT in SHOW CREATE TABLE (Drizzle)
commit 28ae930a71c02c3e05408b9aebd761a23399b567 Author: Piotr Przybylski piotrprz@gmail.com Date: Sun Jun 26 21:25:24 2011 +0200
sql_mode doesn't exist in Drizzle
commit 14ab81248cd8eb4cff5de4d9a3b1d0f0755bd3f5 Author: Piotr Przybylski piotrprz@gmail.com Date: Sun Jun 26 20:46:30 2011 +0200
Don't offer MyISAM engine in Drizzle It can be used only for temporary tables
commit b00eb8f29c1616e71417c02582e081e679434548 Author: Piotr Przybylski piotrprz@gmail.com Date: Sun Jun 26 20:10:49 2011 +0200
Show storage engine list in db/table operations (Drizzle)
commit 3eaff6afb63246045bddd1977c93591b210932d6 Author: Piotr Przybylski piotrprz@gmail.com Date: Sun Jun 26 18:38:36 2011 +0200
A few Drizzle-related changes to db operations tab
commit 6553cdd66307f85b99e37fa5b31218e872b0b633 Author: Piotr Przybylski piotrprz@gmail.com Date: Sun Jun 26 18:37:24 2011 +0200
Add information about query errors to debug output
commit d4d647e169202056886abb3591c7efb21c7f13cc Merge: 7d99d57 3c55511 Author: Piotr Przybylski piotrprz@gmail.com Date: Sun Jun 26 18:32:20 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit 7d99d57ccafc9be02f34def4b44de33da6731de5 Merge: e38b5cd 5403fc1 Author: Piotr Przybylski piotrprz@gmail.com Date: Sat Jun 25 01:00:00 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit e38b5cd4ffc534a19f7f339f96b0e2197b02363c Merge: 9365825 5661c3e Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Jun 23 14:02:58 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: db_structure.php libraries/common.lib.php libraries/database_interface.lib.php tbl_structure.php
commit 9365825f52b3629820e11a963f83fe68925413f3 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jun 22 23:58:02 2011 +0200
Hide connection collation select on home page when connected to Drizzle server
commit 3aaaf33afa218f916e3259d306acb33f054d7cfb Merge: a7ba0fd 18513b3 Author: Piotr Przybylski piotrprz@gmail.com Date: Sun Jun 19 23:35:08 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit a7ba0fd74af1ca9d0aa73fd93cf23d8654a42dd5 Author: Piotr Przybylski piotrprz@gmail.com Date: Sun Jun 19 23:15:54 2011 +0200
Extract server type detection from main.php and make it available in common.lib.php
commit c2b06f0a11522d5b61b30de932d018f979b87fad Author: Piotr Przybylski piotrprz@gmail.com Date: Sun Jun 19 21:10:42 2011 +0200
Don't use OPTIMIZE TABLE and REPAIR TABLE with Drizzle
commit 2977b7160998acff8cab236bf9a08b6fb60b9773 Author: Piotr Przybylski piotrprz@gmail.com Date: Sun Jun 19 20:01:15 2011 +0200
Use DD views instead of SHOW PROCESSLIST (Drizzle)
commit 5951bd9373e4ee9ba2a48ac639fc2aae05fe8c98 Author: Piotr Przybylski piotrprz@gmail.com Date: Sun Jun 19 14:46:49 2011 +0200
Use concat() instead of ANSI string concatenation
commit 53b29d25d24004d1bf7db146af61e3782316ae35 Author: Piotr Przybylski piotrprz@gmail.com Date: Sun Jun 19 14:38:41 2011 +0200
Fix unique key detection in data dictionary
commit 2e01d01b3227ffed9b5329b4320440e35ece04c7 Author: Piotr Przybylski piotrprz@gmail.com Date: Sat Jun 18 00:15:43 2011 +0200
Change all calls of SHOW KEYS/INDEX that use MySQL-specific fields to use query generation function
commit 2444ad6d20ea70f6ea03d0996ff5d3bfb204e13d Merge: 4273c60 1f10c9b Author: Piotr Przybylski piotrprz@gmail.com Date: Sat Jun 18 00:12:43 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit 4273c602c83d819af9e364b2d539eff05367e916 Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Jun 17 21:25:13 2011 +0200
Bugfix for new PMA_DBI_get_columns
commit 30b85be0a2d4d8b45ae386b2392e7c6e787729b8 Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Jun 17 21:03:02 2011 +0200
Allow for null values in PMA_DBI_get_tables_full
commit 6eb6a9930001f6d0c38102d2aec51b984a19a002 Merge: ae42913 c4ae361 Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Jun 17 20:49:28 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: server_status.php
commit ae429136292a1b52a149b4d34409eae9af22f9dd Merge: 693da24 fc2b699 Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Jun 17 20:41:42 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: server_status.php
commit 693da24c95ea98ca8dd1908edab52f7c168ac362 Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Jun 17 19:26:50 2011 +0200
[Drizzle] Don't show "Create view" button for query results
commit 12f70e8938cd9e3c76e878669d3de4bf4cb725ec Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Jun 17 00:22:25 2011 +0200
Replace all SHOW FIELDS calls with PMA_DBI_get_columns() or PMA_DBI_get_columns_sql() Fix PMA_DBI_get_columns() in Drizzle when $full == false
commit d607fa3e5cca1bd9c8e1817db81e9a281cf68610 Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Jun 16 23:12:06 2011 +0200
Make live query chart work in Drizzle
commit 76dde71244cd0ea888feea902e217487a5d240f8 Merge: 2c97f4b 163d929 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jun 15 23:30:21 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit 2c97f4b326c29aa07b6d87c62e796829fb5072d1 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jun 15 23:06:45 2011 +0200
Server status: add a filter category for not-matched variable name prefixes (currently 10 variables in MySQL and Drizzle)
commit 2ceb7588b52ad54a954d6fa137ad35073673fab0 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jun 15 23:01:18 2011 +0200
Status tab: hide unused categories in filter list
commit a5342c70eabee89c27da6cf5b033b24125b235ba Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jun 15 22:53:55 2011 +0200
Server Status: remove warnings, make process list and query stats work (Drizzle)
commit 17f8e161413a00bc677f16425803109c3536db79 Merge: e8b144d f9550ae Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jun 15 15:38:04 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: server_processlist.php
commit e8b144da1188af7cc1212dbaa97cf6723eb44b0a Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Jun 10 21:09:50 2011 +0200
File import - Drizzle has no SET NAMES so charset conversion without any PHP conversion library is impossible - throw an error
commit b35cd1b40fa6432600299a0c69f5620609db4791 Merge: 6cca81e 7db86a9 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jun 8 00:47:17 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: tbl_structure.php
commit 6cca81e04d631aa880a3069f1931f685ca01ce81 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jun 8 00:39:53 2011 +0200
Don't load tbl_triggers.lib.php for Drizzle
commit f77886d1a0e030267813d557bd1927405c863681 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jun 8 00:37:31 2011 +0200
Fix for I_S and D_D table data returned by PMA_DBI_get_tables_full
commit 50e0a41aa314c12059032d009512397e23f5781d Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jun 8 00:23:05 2011 +0200
Don't load db_routines.inc.php and db_events.inc.php for Drizzle
commit 4b344cb40ba4d9d55c82b9569cb8b85cecfd1f38 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jun 8 00:18:40 2011 +0200
Don't load replication.inc.php for Drizzle
commit 7737607582abef979f7a1c834b96114b2488cf65 Author: Piotr Przybylski piotrprz@gmail.com Date: Mon Jun 6 17:23:43 2011 +0200
Cache one more case for PBMS detection
commit 681b61211035b98fe6cc28cef113ad1c3d777598 Author: Piotr Przybylski piotrprz@gmail.com Date: Mon Jun 6 17:18:59 2011 +0200
It's enough to check for blobstreaming plugin once per session One (no pbms plugin loaded) or two (plugin loaded but no PHP library) queries less per displayed page
commit a515aed0fd3a17c4a314800077f8cdb5bdc5e102 Author: Piotr Przybylski piotrprz@gmail.com Date: Mon Jun 6 17:01:00 2011 +0200
Fix check for PBMS plugin in Drizzle
commit 96f3b37fc1d113c1ed17d06687333d6fdc785b36 Merge: a56d77f db07b65 Author: Piotr Przybylski piotrprz@gmail.com Date: Mon Jun 6 16:42:04 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit a56d77fb675e7cb3813f689b860b88ce89a548fb Merge: 26ec25b 3cf4830 Author: Piotr Przybylski piotrprz@gmail.com Date: Mon Jun 6 12:12:42 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit 26ec25b65e1cec25e680c9b53c715f4c890f3590 Author: Piotr Przybylski piotrprz@gmail.com Date: Fri Jun 3 21:34:26 2011 +0200
Home page: display db server type inside box, not in box header
commit 08da1557e2d95be41ef3d2821da3dc0bcfee214d Merge: cdaa1ff d6b26b2 Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Jun 2 22:32:22 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit cdaa1ff10125e57e12e9632c36364682317af52a Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Jun 2 22:31:59 2011 +0200
Three possible values for server info header on home page: MySQL (default), Drizzle, MariaDB
commit 1df2a890e15944c70d3c0afc7fa6337c38b30cf7 Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Jun 2 16:07:59 2011 +0200
Add 'COLLATE utf8_bin' to configuration storage tables (Drizzle)
commit 121cd6263bc64c09ff95bb72b917fbc20f410cf1 Merge: 10c7353 12f1bb7 Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Jun 2 15:43:28 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit 10c7353c3ce58b5dc1bee1ac03440050cd0536f9 Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Jun 2 01:11:01 2011 +0200
Add phpMyAdmin configuration storage schema for Drizzle
commit 52df66878c381fe2f2cb0883812ea3cf36105370 Merge: 940042c d489272 Author: Piotr Przybylski piotrprz@gmail.com Date: Thu Jun 2 01:07:00 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: libraries/server_links.inc.php
commit 940042c6b37b4b93788256395df2c27824a271cb Author: Piotr Przybylski piotrprz@gmail.com Date: Wed Jun 1 13:19:10 2011 +0200
Add Plugins server tab for Drizzle
commit 946cc6a5599d20133273bdd3846577b6d4817b8e Author: Piotr Przybylski piotrprz@gmail.com Date: Tue May 31 20:25:52 2011 +0200
Change wording on home page
commit 56768f5f4c7c5379f277b3e17e607f1f163d21c2 Merge: 33255a1 78685cc Author: Piotr Przybylski piotrprz@gmail.com Date: Sun May 29 18:27:58 2011 +0200
Merge branch 'master' into drizzle
commit 33255a189cc532a5d7c4d1051e685816245f95db Author: Piotr Przybylski piotrprz@gmail.com Date: Sat May 28 00:26:13 2011 +0200
PMA_DBI_get_columns_full: works with Drizzle, uniform behavior with DisableIS true/false
commit dc2a298b7a2ac5cf257b984191a0c92a192e1bff Author: Piotr Przybylski piotrprz@gmail.com Date: Fri May 27 21:05:11 2011 +0200
Add 'noclick' class for I_S and D_D in database list (Drizzle)
commit bd543f90e8d8488df6b03f55206c23e1cedda405 Merge: 9f59de6 0b5f441 Author: Piotr Przybylski piotrprz@gmail.com Date: Fri May 27 20:25:47 2011 +0200
Merge branch 'master' of ssh://phpmyadmin.git.sourceforge.net/gitroot/phpmyadmin/phpmyadmin into drizzle
Conflicts: navigation.php
commit 9f59de61673ae4472970862f75522e76b800dc14 Author: Piotr Przybylski piotrprz@gmail.com Date: Fri May 27 20:16:37 2011 +0200
PMA_isSuperuser() and other privileges (Drizzle)
commit add6c6325c238cdca23ce0212c77b474535080cb Author: Piotr Przybylski piotrprz@gmail.com Date: Fri May 27 18:46:35 2011 +0200
Fix wording on main page to be correct for MySQL and Drizzle
commit 1220eafa89f1d801bdde4703a2bc20cb3077e1a9 Merge: e51a48a 46ba122 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed May 25 23:31:17 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
commit e51a48a3fae101a51cbaa896ca06844f8b74d4ab Author: Piotr Przybylski piotrprz@gmail.com Date: Wed May 25 20:01:59 2011 +0200
Drizzle: hide Privileges tab in database links
commit 97d5588d2b702bfe4070575cb5f639839982815e Author: Piotr Przybylski piotrprz@gmail.com Date: Wed May 25 19:49:22 2011 +0200
Allow to drop 'mysql' database in Drizzle
commit cafbefd51871dd52dfd4c7ed6ce9eef6daefa6f5 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed May 25 19:43:44 2011 +0200
PMA_DBI_get_columns - add "on update ..." to Extra when possible (Drizzle)
commit d5f3636a5da766c9d1ec75598453b430d56e6dc7 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed May 25 19:12:27 2011 +0200
server_common.php for Drizzle: don't select 'mysql' table, skip listing of master logs
commit b7b76d6519b812198f1b892d0b4d602466e9608b Author: Piotr Przybylski piotrprz@gmail.com Date: Wed May 25 19:09:32 2011 +0200
Don't display Privileges, Engines and Replication for Drizzle
commit 8259510361555ffb14e24aa553f5c5618f659a03 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed May 25 18:49:02 2011 +0200
Database list for Drizzle: treat 'mysql' as normal table, don't show 'Check Privileges' link
commit d3ea25c159dcb4ea02d00d771d6b2e5ab8480369 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed May 25 18:24:10 2011 +0200
Make PMA_getDbCollation work with Drizzle
commit 2b202c04cebbd267ba97838c8dce091d6e7b1299 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed May 25 18:17:41 2011 +0200
Drizzle has CHARACTER SET
commit 86d5ae26972a11c1a09c99b3bb3e5395cf24769b Author: Piotr Przybylski piotrprz@gmail.com Date: Tue May 24 19:35:57 2011 +0200
Emulate relations for some data_dictionary tables
commit 83b81dc242a54194779fdb8d5ac3bf41d6749709 Merge: dd5324c 1835d93 Author: Piotr Przybylski piotrprz@gmail.com Date: Tue May 24 15:13:41 2011 +0200
Merge remote-tracking branch 'origin/master' into drizzle
Conflicts: libraries/common.lib.php
commit dd5324c05a71f4ca9a8d1a35e7c88cb5e54acdca Author: Piotr Przybylski piotrprz@gmail.com Date: Tue May 24 10:07:20 2011 +0200
Rewrite PMA_DBI_get_databases_full to work with Drizzle For Drizzle the only extended stat that works are SCHEMA_TABLES (always) and SCHEMA_TABLE_ROWS (only for InnoDB/innobase tables)
commit 539e8b26b3b39ced278239f6fc7d31f2c3bafddb Author: Piotr Przybylski piotrprz@gmail.com Date: Sun May 22 16:23:38 2011 +0200
Cast d_d.tables.auto_increment to NULL because currently (2011.03.13 GA) Drizzle doesn't provide correct value
commit fb5d25221bed2d4c5222dcc56057a6c9b645ee78 Author: Piotr Przybylski piotrprz@gmail.com Date: Sun May 22 16:22:48 2011 +0200
Return null when PMA_formatByteDown argument is null to prevent casting unavailable values to 0
commit 3c9ef40d1e59549eea5d60094a4544479689dc3d Author: Piotr Przybylski piotrprz@gmail.com Date: Sun May 22 15:03:30 2011 +0200
Add table alias in PMA_DBI_get_tables_full to avoid ambiguous field names in filtered queries (broken by join with TABLE_CACHE)
commit 5ef58661f1563b694320b0a7559b8093d11fcb9d Author: Piotr Przybylski piotrprz@gmail.com Date: Sun May 22 14:50:59 2011 +0200
Count rows for PBMS tables when PMA_DBI_get_tables_full returned NULL
commit e69c721789dd2f8b64407c600c454ed4c8d8f784 Author: Piotr Przybylski piotrprz@gmail.com Date: Sun May 22 14:25:51 2011 +0200
Try to get AVG_ROW_LENGTH from table cache
commit 05c8dbee779b1fb4de656c4b1262bcc6eb65944c Author: Piotr Przybylski piotrprz@gmail.com Date: Sun May 22 14:20:04 2011 +0200
Try to get table size from table cache
commit 05b987cff0649e924d9f7aba633c01e3f05f48f7 Author: Piotr Przybylski piotrprz@gmail.com Date: Fri May 20 16:59:03 2011 +0200
Fix notices for undefined $row_count_pre and $show_superscript when displaying database structure for I_S and D_D
commit e36a54ad27c1bcb19c4e9a981a2b4c4d699d0f50 Author: Piotr Przybylski piotrprz@gmail.com Date: Fri May 20 16:54:53 2011 +0200
Show username in processes (Drizzle)
commit b9d37f27d2f3eb70f6ef0d2fb50d6eb955a8a2ea Author: Piotr Przybylski piotrprz@gmail.com Date: Thu May 19 15:37:55 2011 +0200
Replace broken ANSI string concatenation with concat() function
commit 4e090e16474e1bfed2dafe027eaefbaf0a7a788a Author: Piotr Przybylski piotrprz@gmail.com Date: Thu May 19 15:26:22 2011 +0200
Read precision and scale for numeric columns, read enum definition for enums
commit ee72f556aa0fee258c2da0fbf9f35cf18d3ba578 Author: Piotr Przybylski piotrprz@gmail.com Date: Thu May 19 15:08:55 2011 +0200
Code formatting
commit 0a89f07978b9f26286947c379883f686ce556126 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed May 18 22:21:44 2011 +0200
Don't display "Add FULLTEXT index" for Drizzle
commit 8e24b87ad77f5218c2d2c1cdc1468bc6b4c021ec Author: Piotr Przybylski piotrprz@gmail.com Date: Wed May 18 22:20:24 2011 +0200
Remove SHOW FIELDS query from tbs_structure, use PMA_DBI_get_columns instead
commit 3c200767851be47ea5d3bccb6bdfc8a82c163020 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed May 18 22:19:26 2011 +0200
Make PMA_DBI_get_columns work with Drizzle
commit 9c170511179a721198527f063a58ab1b031b1b93 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed May 18 20:49:04 2011 +0200
Remove deprecated function PMA_DBI_get_fields
commit 7d3cd879a496adc27e5e827ef3e35f7633a827de Author: Piotr Przybylski piotrprz@gmail.com Date: Wed May 18 11:51:08 2011 +0200
Enable exact row counts for views in I_S and D_D. They map to in-memory data, so this shouldn't pose a performance problem
commit 4700907a5bd21e22f69f6a4af91e9e6a86f6803c Author: Piotr Przybylski piotrprz@gmail.com Date: Tue May 17 23:23:40 2011 +0200
Join with InnoDB stats only where InnoDB is provided by innobase library Fix notice
commit 7fb709c215a0a7909baee4226f0c10b2b4052963 Author: Piotr Przybylski piotrprz@gmail.com Date: Tue May 17 10:42:19 2011 +0200
Make $tbl_is_view to be used as intended - check TABLE_TYPE instead of doing 20-50 useless calls to PMA_DBI_get_tables_full to get just table types for views in I_S and D_D...
commit be748a7d84dd51edd1143c46baeeca7ab94863ba Author: Piotr Przybylski piotrprz@gmail.com Date: Tue May 17 00:00:21 2011 +0200
Case insensitive comparisons to check for I_S, tread D_D as I_S
commit abd6b3b5cc53c4cb1f59d63c83dbdbf6c42a81d4 Merge: 3ff9e70 c74fad4 Author: Piotr Przybylski piotrprz@gmail.com Date: Mon May 16 23:37:29 2011 +0200
Merge branch 'master' into drizzle
commit 3ff9e701b1a2d872fff60f3febf330bcf94b05cf Author: Piotr Przybylski piotrprz@gmail.com Date: Wed May 11 12:59:54 2011 +0200
Changed ternary operator to if/else
commit b4bfa7f155fce163557f726563908b238f32e005 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed May 11 12:56:43 2011 +0200
Use lowercase comparisons for Drizzle database names
commit 602b5d03eee1c62b04d5b59c556cc0b73dcfe9c5 Merge: 0f49267 994606b Author: Piotr Przybylski piotrprz@gmail.com Date: Mon May 9 21:56:06 2011 +0200
Merge branch 'master' of ssh://phpmyadmin.git.sourceforge.net/gitroot/phpmyadmin/phpmyadmin into drizzle
commit 0f49267fd7204e8d40f025154e31bb377b491071 Author: Piotr Przybylski piotrprz@gmail.com Date: Sat May 7 22:25:55 2011 +0200
Don't show "0 B" as InnoDB table size when DBMS doesn't provide this data (Drizzle)
commit 7e63fd4573d801985587ff55b22f17b79bae00b9 Author: Piotr Przybylski piotrprz@gmail.com Date: Sat May 7 22:17:07 2011 +0200
Better handling of columns in table structure tab (Drizzle)
commit 7ac599da262d16b1bd80b4e1ef8c7162c807053a Author: Piotr Przybylski piotrprz@gmail.com Date: Sat May 7 22:15:54 2011 +0200
Make Browse and Search always active for views in db structure view
commit 423b45f6b22563b7e7b76ad48ca081ae578851ad Author: Piotr Przybylski piotrprz@gmail.com Date: Sat May 7 22:06:23 2011 +0200
PMA_DBI_get_tables_full - row counts for InnoDB tables in Drizzle
commit 397a44fee9e49e99ee00384c9ecccd4bd64f4cc6 Author: Piotr Przybylski piotrprz@gmail.com Date: Sat May 7 20:15:17 2011 +0200
Properly detect Drizzle system views
commit 52d44758eaabbfffae7ed6a32ece04b087c2e67f Author: Piotr Przybylski piotrprz@gmail.com Date: Sat May 7 20:13:49 2011 +0200
Removed deprecated defines Made sure that unknown field types are mapped to null
commit 7bf17c184317f13f66c244700c4c6af8776b552f Author: Piotr Przybylski piotrprz@gmail.com Date: Wed May 4 15:32:45 2011 +0200
Fix for Drizzle collations
commit 80485250f07a13224a59e7222afccee53d8cac7f Author: Piotr Przybylski piotrprz@gmail.com Date: Wed May 4 15:05:09 2011 +0200
Make sure I_S and D_D from Drizzle get the same treatment as MySQL I_S
commit ddcc47032058af7a7ed47b7e5e2a43b6f29d8dc0 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed May 4 15:03:56 2011 +0200
Make PMA_DBI_get_tables_full work with Drizzle
commit 315e35c077e1b21d0f9798a43ccdb2dfa5071500 Author: Piotr Przybylski piotrprz@gmail.com Date: Wed May 4 14:57:58 2011 +0200
Set DisableIS = false for Drizzle
-----------------------------------------------------------------------
Summary of changes: Documentation.html | 6 +- db_create.php | 4 +- db_datadict.php | 12 +- db_operations.php | 23 +- db_qbe.php | 4 +- db_routines.php | 6 +- db_search.php | 19 +- db_structure.php | 39 +- import.php | 14 +- js/server_plugins.js | 30 + js/server_status_monitor.js | 2 +- libraries/Advisor.class.php | 6 + libraries/Index.class.php | 2 +- libraries/List.class.php | 3 +- libraries/List_Database.class.php | 2 +- libraries/StorageEngine.class.php | 24 +- libraries/Table.class.php | 43 +- libraries/Tracker.class.php | 87 +++- libraries/advisory_rules.txt | 51 +- libraries/blobstreaming.lib.php | 44 +- libraries/build_html_for_db.lib.php | 5 +- libraries/check_user_privileges.lib.php | 11 +- libraries/common.inc.php | 8 + libraries/common.lib.php | 34 +- libraries/config.default.php | 7 +- libraries/config/validate.lib.php | 30 +- libraries/data_dictionary_relations.lib.php | 163 ++++++ .../{data_mysql.inc.php => data_drizzle.inc.php} | 131 ++--- libraries/data_mysql.inc.php | 4 +- libraries/database_interface.lib.php | 608 +++++++++++++++----- libraries/db_common.inc.php | 6 +- libraries/db_info.inc.php | 2 +- libraries/db_links.inc.php | 4 +- libraries/dbi/drizzle-wrappers.lib.php | 442 ++++++++++++++ libraries/dbi/drizzle.dbi.lib.php | 584 +++++++++++++++++++ libraries/dbi/mysqli.dbi.lib.php | 6 + libraries/display_tbl.lib.php | 2 +- libraries/export/htmlword.php | 8 +- libraries/export/latex.php | 8 +- libraries/export/odt.php | 8 +- libraries/export/sql.php | 106 +++-- libraries/export/texytext.php | 8 +- libraries/export/xml.php | 57 ++- libraries/import.lib.php | 10 +- libraries/mysql_charsets.lib.php | 22 +- libraries/pmd_common.php | 2 +- libraries/relation.lib.php | 26 +- libraries/replication.inc.php | 2 +- libraries/replication_gui.lib.php | 2 +- libraries/server_common.inc.php | 7 +- libraries/server_links.inc.php | 16 +- libraries/server_synchronize.lib.php | 30 +- libraries/tbl_common.php | 6 +- libraries/tbl_properties.inc.php | 20 +- main.php | 58 +- navigation.php | 2 +- ...create_tables.sql => create_tables_drizzle.sql} | 93 ++-- server_databases.php | 11 +- server_plugins.php | 208 +++++++ server_privileges.php | 2 +- server_replication.php | 2 +- server_status.php | 108 +++- server_synchronize.php | 54 ++- sql.php | 8 +- tbl_alter.php | 11 +- tbl_change.php | 6 +- tbl_operations.php | 4 +- tbl_printview.php | 4 +- tbl_structure.php | 53 +- themes/original/css/theme_right.css.php | 8 +- themes/pmahomme/css/theme_right.css.php | 9 +- 71 files changed, 2746 insertions(+), 701 deletions(-) create mode 100644 js/server_plugins.js create mode 100644 libraries/data_dictionary_relations.lib.php copy libraries/{data_mysql.inc.php => data_drizzle.inc.php} (62%) create mode 100644 libraries/dbi/drizzle-wrappers.lib.php create mode 100644 libraries/dbi/drizzle.dbi.lib.php copy scripts/{create_tables.sql => create_tables_drizzle.sql} (66%) create mode 100644 server_plugins.php
diff --git a/Documentation.html b/Documentation.html index d590a6b..d746782 100644 --- a/Documentation.html +++ b/Documentation.html @@ -1787,7 +1787,8 @@ CREATE DATABASE,ALTER DATABASE,DROP DATABASE</pre> <dd>Defines the default connection collation to use, if not user-defined.<br /> See the <a href="http://dev.mysql.com/doc/mysql/en/charset-charsets.html">MySQL - documentation</a> for list of possible values.</dd> + documentation</a> for list of possible values. This setting is ignored when + connected to Drizzle server.</dd>
<dt id="cfg_Lang">$cfg['Lang'] string</dt> <dd>Force language to use.<br /> @@ -4923,10 +4924,11 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA <li>BLOBstreaming support</li> </ul></li>
-<li>Piotr Przybylski (Google Summer of Code 2008 and 2010) +<li>Piotr Przybylski (Google Summer of Code 2008, 2010 and 2011) <ul> <li>improved setup script</li> <li>user preferences</li> + <li>Drizzle support</li> </ul></li>
<li>Derek Schaefer (Google Summer of Code 2009) diff --git a/db_create.php b/db_create.php index 2d7877a..84ef1a5 100644 --- a/db_create.php +++ b/db_create.php @@ -13,7 +13,9 @@ $GLOBALS['js_include'][] = 'functions.js'; $GLOBALS['js_include'][] = 'jquery/jquery-ui-1.8.custom.js';
require_once './libraries/mysql_charsets.lib.php'; -require './libraries/replication.inc.php'; +if (!PMA_DRIZZLE) { + require './libraries/replication.inc.php'; +} require './libraries/build_html_for_db.lib.php';
PMA_checkParameters(array('new_db')); diff --git a/db_datadict.php b/db_datadict.php index 89b2bc5..f580e21 100644 --- a/db_datadict.php +++ b/db_datadict.php @@ -76,7 +76,7 @@ foreach($tables as $table) { */
PMA_DBI_select_db($db); - $result = PMA_DBI_query('SHOW KEYS FROM ' . PMA_backquote($table) . ';'); + $indexes = PMA_DBI_get_table_indexes($db, $table); $primary = ''; $indexes = array(); $lastIndex = ''; @@ -84,7 +84,7 @@ foreach($tables as $table) { $indexes_data = array(); $pk_array = array(); // will be use to emphasis prim. keys in the table // view - while ($row = PMA_DBI_fetch_assoc($result)) { + foreach ($indexes as $row) { // Backups the list of primary keys if ($row['Key_name'] == 'PRIMARY') { $primary .= $row['Column_name'] . ', '; @@ -111,10 +111,6 @@ foreach($tables as $table) { }
} // end while - if ($result) { - PMA_DBI_free_result($result); - } -
/** * Gets columns properties @@ -124,7 +120,7 @@ foreach($tables as $table) {
if (PMA_MYSQL_INT_VERSION < 50025) { // We need this to correctly learn if a TIMESTAMP is NOT NULL, since - // SHOW FULL FIELDS or INFORMATION_SCHEMA incorrectly says NULL + // SHOW FULL COLUMNS or INFORMATION_SCHEMA incorrectly says NULL // and SHOW CREATE TABLE says NOT NULL // http://bugs.mysql.com/20910.
@@ -210,7 +206,7 @@ foreach($tables as $table) { && ! empty($analyzed_sql[0]['create_table_fields'][$field_name]['type']) && $analyzed_sql[0]['create_table_fields'][$field_name]['type'] == 'TIMESTAMP' && $analyzed_sql[0]['create_table_fields'][$field_name]['timestamp_not_null']) { - // here, we have a TIMESTAMP that SHOW FULL FIELDS reports as having the + // here, we have a TIMESTAMP that SHOW FULL COLUMNS reports as having the // NULL attribute, but SHOW CREATE TABLE says the contrary. Believe // the latter. /** diff --git a/db_operations.php b/db_operations.php index 6b40947..0bd9eef 100644 --- a/db_operations.php +++ b/db_operations.php @@ -42,12 +42,13 @@ if (strlen($db) && (! empty($db_rename) || ! empty($db_copy))) { } else { $sql_query = ''; // in case target db exists $_error = false; - if ($move || - (isset($create_database_before_copying) && $create_database_before_copying)) { + if ($move || (isset($create_database_before_copying) && $create_database_before_copying)) { // lower_case_table_names=1 `DB` becomes `db` - $lower_case_table_names = PMA_DBI_fetch_value('SHOW VARIABLES LIKE "lower_case_table_names"', 0, 1); - if ($lower_case_table_names === '1') { - $newname = PMA_strtolower($newname); + if (!PMA_DRIZZLE) { + $lower_case_table_names = PMA_DBI_fetch_value('SHOW VARIABLES LIKE "lower_case_table_names"', 0, 1); + if ($lower_case_table_names === '1') { + $newname = PMA_strtolower($newname); + } }
$local_query = 'CREATE DATABASE ' . PMA_backquote($newname); @@ -225,7 +226,7 @@ if (strlen($db) && (! empty($db_rename) || ! empty($db_copy))) { unset($GLOBALS['sql_constraints_query_full_db'], $one_query); }
- if (PMA_MYSQL_INT_VERSION >= 50100) { + if (!PMA_DRIZZLE && PMA_MYSQL_INT_VERSION >= 50100) { // here DELIMITER is not used because it's not part of the // language; each statement is sent one by one
@@ -342,11 +343,7 @@ if (empty($is_info)) { }
$db_collation = PMA_getDbCollation($db); -if ($db == 'information_schema') { - $is_information_schema = true; -} else { - $is_information_schema = false; -} +$is_information_schema = PMA_is_system_schema($db);
if (!$is_information_schema) { if ($cfgRelation['commwork']) { @@ -416,7 +413,9 @@ if ($db != 'mysql') { // Drop link if allowed // Don't even try to drop information_schema. You won't be able to. Believe me. You won't. // Don't allow to easily drop mysql database, RFE #1327514. -if (($is_superuser || $GLOBALS['cfg']['AllowUserDropDatabase']) && ! $db_is_information_schema && ($db != 'mysql')) { +if (($is_superuser || $GLOBALS['cfg']['AllowUserDropDatabase']) + && !$db_is_information_schema + && (PMA_DRIZZLE || $db != 'mysql')) { ?> <div class="operations_half_width"> <fieldset class="caution"> diff --git a/db_qbe.php b/db_qbe.php index fe1456e..66d670b 100644 --- a/db_qbe.php +++ b/db_qbe.php @@ -755,8 +755,8 @@ if (isset($Field) && count($Field) > 0) { PMA_DBI_select_db($db);
foreach ($tab_all as $tab) { - $ind_rs = PMA_DBI_query('SHOW INDEX FROM ' . PMA_backquote($tab) . ';'); - while ($ind = PMA_DBI_fetch_assoc($ind_rs)) { + $indexes = PMA_DBI_get_table_indexes($db, $tab); + foreach ($indexes as $ind) { $col1 = $tab . '.' . $ind['Column_name']; if (isset($col_all[$col1])) { if ($ind['Non_unique'] == 0) { diff --git a/db_routines.php b/db_routines.php index 745d1f9..6d22335 100644 --- a/db_routines.php +++ b/db_routines.php @@ -12,7 +12,11 @@ require_once './libraries/common.inc.php'; require_once './libraries/common.lib.php'; require_once './libraries/mysql_charsets.lib.php'; -require_once './libraries/data_mysql.inc.php'; +if (PMA_DRIZZLE) { + require_once './libraries/data_drizzle.inc.php'; +} else { + require_once './libraries/data_mysql.inc.php'; +}
/** * Include JavaScript libraries diff --git a/db_search.php b/db_search.php index 6242a53..c76e5d8 100644 --- a/db_search.php +++ b/db_search.php @@ -148,11 +148,20 @@ if (isset($_REQUEST['submit_search'])) { $thefieldlikevalue = array(); foreach ($tblfields as $tblfield) { if (! isset($field) || strlen($field) == 0 || $tblfield['Field'] == $field) { - $thefieldlikevalue[] = 'CONVERT(' . PMA_backquote($tblfield['Field']) . ' USING utf8)' - . ' ' . $like_or_regex . ' ' - . "'" . $automatic_wildcard - . $search_word - . $automatic_wildcard . "'"; + // Drizzle has no CONVERT and all text columns are UTF-8 + if (PMA_DRIZZLE) { + $thefieldlikevalue[] = PMA_backquote($tblfield['Field']) + . ' ' . $like_or_regex . ' ' + . "'" . $automatic_wildcard + . $search_word + . $automatic_wildcard . "'"; + } else { + $thefieldlikevalue[] = 'CONVERT(' . PMA_backquote($tblfield['Field']) . ' USING utf8)' + . ' ' . $like_or_regex . ' ' + . "'" . $automatic_wildcard + . $search_word + . $automatic_wildcard . "'"; + } } } // end for
diff --git a/db_structure.php b/db_structure.php index c0c1d33..a7e7a2b 100644 --- a/db_structure.php +++ b/db_structure.php @@ -44,7 +44,11 @@ if (empty($is_info)) { $sub_part = '_structure'; require './libraries/db_info.inc.php';
- require_once './libraries/replication.inc.php'; + if (!PMA_DRIZZLE) { + require './libraries/replication.inc.php'; + } else { + $server_slave_status = false; + } }
require_once './libraries/bookmark.lib.php'; @@ -158,10 +162,12 @@ foreach ($tables as $keyname => $each_table) { } break; case 'InnoDB' : - // InnoDB table: Row count is not accurate but data and index - // sizes are. + case 'PBMS' : + // InnoDB table: Row count is not accurate but data and index sizes are. + // PBMS table in Drizzle: TABLE_ROWS is taken from table cache, so it may be unavailable
- if ($each_table['TABLE_ROWS'] < $GLOBALS['cfg']['MaxExactCount']) { + if (($each_table['ENGINE'] == 'InnoDB' && $each_table['TABLE_ROWS'] < $GLOBALS['cfg']['MaxExactCount']) + || !isset($each_table['TABLE_ROWS'])) { $each_table['COUNTED'] = true; $each_table['TABLE_ROWS'] = PMA_Table::countRecords($db, $each_table['TABLE_NAME'], $force_exact = true, @@ -170,7 +176,8 @@ foreach ($tables as $keyname => $each_table) { $each_table['COUNTED'] = false; }
- if ($is_show_stats) { + // Drizzle doesn't provide data and index length, check for null + if ($is_show_stats && $each_table['Data_length'] !== null) { $tblsize = $each_table['Data_length'] + $each_table['Index_length']; $sum_size += $tblsize; list($formatted_size, $unit) = PMA_formatByteDown($tblsize, 3, ($tblsize > 0) ? 1 : 0); @@ -193,6 +200,7 @@ foreach ($tables as $keyname => $each_table) { // or on some servers it's reported as "SYSTEM VIEW" case null : case 'SYSTEM VIEW' : + case 'FunctionEngine' : // if table is broken, Engine is reported as null, so one more test if ($each_table['TABLE_TYPE'] == 'VIEW') { // countRecords() takes care of $cfg['MaxExactCountViews'] @@ -249,7 +257,7 @@ foreach ($tables as $keyname => $each_table) { $hidden_fields[] = '<input type="hidden" name="views[]" value="' . htmlspecialchars($each_table['TABLE_NAME']) . '" />'; }
- if ($each_table['TABLE_ROWS'] > 0) { + if ($each_table['TABLE_ROWS'] > 0 || $table_is_view) { $browse_table = '<a href="sql.php?' . $tbl_url_query . '&pos=0">' . $titles['Browse'] . '</a>'; $search_table = '<a href="tbl_select.php?' . $tbl_url_query . '">' . $titles['Search'] . '</a>'; $browse_table_label = '<a href="sql.php?' . $tbl_url_query . '&pos=0">' . $truename . '</a>'; @@ -367,8 +375,12 @@ foreach ($tables as $keyname => $each_table) { // so ensure that we'll display "in use" below for a table // that needs to be repaired if (isset($each_table['TABLE_ROWS']) && ($each_table['ENGINE'] != null || $table_is_view)) { + $row_count_pre = ''; + $show_superscript = ''; if ($table_is_view) { - if ($each_table['TABLE_ROWS'] >= $GLOBALS['cfg']['MaxExactCountViews']) { + // Drizzle views use FunctionEngine, and the only place where they are available are I_S and D_D + // schemas, where we do exact counting + if ($each_table['TABLE_ROWS'] >= $GLOBALS['cfg']['MaxExactCountViews'] && $each_table['ENGINE'] != 'FunctionEngine') { $row_count_pre = '~'; $sum_row_count_pre = '~'; $show_superscript = PMA_showHint(PMA_sanitize(sprintf(__('This view has at least this number of rows. Please refer to %sdocumentation%s.'), '[a@./Documentation.html#cfg_MaxExactCountViews@_blank]', '[/a]'))); @@ -378,9 +390,6 @@ foreach ($tables as $keyname => $each_table) { $row_count_pre = '~'; $sum_row_count_pre = '~'; $show_superscript = ''; - } else { - $row_count_pre = ''; - $show_superscript = ''; } ?> <td class="value tbl_rows"><?php echo $row_count_pre . PMA_formatNumber($each_table['TABLE_ROWS'], 0) . $show_superscript; ?></td> @@ -506,10 +515,12 @@ if (!$db_is_information_schema && !$cfg['DisableMultiTableMaintenance']) { . __('Drop') . '</option>' . "\n"; echo ' <option value="check_tbl" >' . __('Check table') . '</option>' . "\n"; - echo ' <option value="optimize_tbl" >' - . __('Optimize table') . '</option>' . "\n"; - echo ' <option value="repair_tbl" >' - . __('Repair table') . '</option>' . "\n"; + if (!PMA_DRIZZLE) { + echo ' <option value="optimize_tbl" >' + . __('Optimize table') . '</option>' . "\n"; + echo ' <option value="repair_tbl" >' + . __('Repair table') . '</option>' . "\n"; + } echo ' <option value="analyze_tbl" >' . __('Analyze table') . '</option>' . "\n"; echo ' <option value="add_prefix_tbl" >' diff --git a/import.php b/import.php index 56732ae..f305293 100644 --- a/import.php +++ b/import.php @@ -346,10 +346,16 @@ if ($GLOBALS['PMA_recoding_engine'] != PMA_CHARSET_NONE && isset($charset_of_fil $charset_conversion = true; } } elseif (isset($charset_of_file) && $charset_of_file != 'utf8') { - PMA_DBI_query('SET NAMES '' . $charset_of_file . '''); - // We can not show query in this case, it is in different charset - $sql_query_disabled = true; - $reset_charset = true; + if (PMA_DRIZZLE) { + // Drizzle doesn't support other character sets, so we can't fallback to SET NAMES - throw an error + $error = true; + $message = PMA_Message::error(__('Cannot convert file's character set without character set conversion library')); + } else { + PMA_DBI_query('SET NAMES '' . $charset_of_file . '''); + // We can not show query in this case, it is in different charset + $sql_query_disabled = true; + $reset_charset = true; + } }
// Something to skip? diff --git a/js/server_plugins.js b/js/server_plugins.js new file mode 100644 index 0000000..9d20edb --- /dev/null +++ b/js/server_plugins.js @@ -0,0 +1,30 @@ +/** + * Functions used in server plugins pages + */ + +var pma_theme_image; // filled in server_plugins.php + +$(function() { + // Add tabs + $('#pluginsTabs').tabs({ + // Tab persistence + cookie: { name: 'pma_serverStatusTabs', expires: 1 }, + show: function(event, ui) { + // Fixes line break in the menu bar when the page overflows and scrollbar appears + menuResize(); + // 'Plugins' tab is too high due to hiding of 'Modules' by negative left position, + // hide tabs by changing display to fix it + $(ui.panel).closest('.ui-tabs').find('> div').not(ui.panel).css('display', 'none'); + $(ui.panel).css('display', 'block'); + } + }); + + // Make columns sortable, but only for tables with more than 1 data row + var $tables = $('#plugins_plugins table:has(tbody tr + tr)'); + $tables.tablesorter({ + sortList: [[0,0]], + widgets: ['zebra'] + }); + $tables.find('thead th') + .append('<img class="sortableIcon" src="' + pma_theme_image + 'cleardot.gif" alt="">'); +}); \ No newline at end of file diff --git a/js/server_status_monitor.js b/js/server_status_monitor.js index e89f048..12a41d3 100644 --- a/js/server_status_monitor.js +++ b/js/server_status_monitor.js @@ -990,7 +990,7 @@ $(function() { zoomType: 'x', events: { selection: function(event) { - if (editMode) { + if (editMode || $('#logAnalyseDialog').length == 0) { return false; }
diff --git a/libraries/Advisor.class.php b/libraries/Advisor.class.php index 12fdcad..bf4e404 100644 --- a/libraries/Advisor.class.php +++ b/libraries/Advisor.class.php @@ -21,6 +21,12 @@ class Advisor PMA_DBI_fetch_result('SHOW GLOBAL STATUS', 0, 1), PMA_DBI_fetch_result('SHOW GLOBAL VARIABLES', 0, 1) ); + if (PMA_DRIZZLE) { + $this->variables = array_merge($this->variables, + PMA_DBI_fetch_result( + "SELECT concat('Com_', variable_name), variable_value + FROM data_dictionary.GLOBAL_STATEMENTS", 0, 1)); + } // Add total memory to variables as well require_once 'libraries/sysinfo.lib.php'; $sysinfo = getSysInfo(); diff --git a/libraries/Index.class.php b/libraries/Index.class.php index 25f613f..47c9950 100644 --- a/libraries/Index.class.php +++ b/libraries/Index.class.php @@ -157,7 +157,7 @@ class PMA_Index return true; }
- $_raw_indexes = PMA_DBI_fetch_result('SHOW INDEX FROM ' . PMA_backquote($schema) . '.' . PMA_backquote($table)); + $_raw_indexes = PMA_DBI_get_table_indexes($schema, $table); foreach ($_raw_indexes as $_each_index) { $_each_index['Schema'] = $schema; if (! isset(PMA_Index::$_registry[$schema][$table][$_each_index['Key_name']])) { diff --git a/libraries/List.class.php b/libraries/List.class.php index 694546a..8303227 100644 --- a/libraries/List.class.php +++ b/libraries/List.class.php @@ -82,7 +82,8 @@ abstract class PMA_List extends ArrayObject
$options = ''; foreach ($this as $each_item) { - if (false === $include_information_schema && 'information_schema' === $each_item) { + if (false === $include_information_schema + && PMA_is_system_schema($each_item)) { continue; } $options .= '<option value="' . htmlspecialchars($each_item) . '"'; diff --git a/libraries/List_Database.class.php b/libraries/List_Database.class.php index e9907cf..1e1b31f 100644 --- a/libraries/List_Database.class.php +++ b/libraries/List_Database.class.php @@ -390,7 +390,7 @@ require_once './libraries/List.class.php'; foreach ($dbs as $db) { $return .= '<option value="' . htmlspecialchars($db['name']) . '"' .' title="' . htmlspecialchars($db['comment']) . '"'; - if ($db['name'] == $selected) { + if ($db['name'] == $selected || (PMA_DRIZZLE && strtolower($db['name']) == strtolower($selected))) { $return .= ' selected="selected"'; } $return .= '>' . htmlspecialchars($cut ? $db['disp_name_cut'] : $db['disp_name']); diff --git a/libraries/StorageEngine.class.php b/libraries/StorageEngine.class.php index e5c03b5..de30ad7 100644 --- a/libraries/StorageEngine.class.php +++ b/libraries/StorageEngine.class.php @@ -58,7 +58,22 @@ class PMA_StorageEngine static $storage_engines = null;
if (null == $storage_engines) { - $storage_engines = PMA_DBI_fetch_result('SHOW STORAGE ENGINES', 'Engine'); + if (PMA_DRIZZLE) { + $sql = "SELECT + p.plugin_name AS Engine, + (CASE + WHEN p.plugin_name = @@storage_engine THEN 'DEFAULT' + WHEN p.is_active THEN 'YES' + ELSE 'DISABLED' END) AS Support, + m.module_description AS Comment + FROM data_dictionary.plugins p + JOIN data_dictionary.modules m USING (module_name) + WHERE p.plugin_type = 'StorageEngine' + AND p.plugin_name NOT IN ('FunctionEngine', 'schema')"; + $storage_engines = PMA_DBI_fetch_result($sql, 'Engine'); + } else { + $storage_engines = PMA_DBI_fetch_result('SHOW STORAGE ENGINES', 'Engine'); + } }
return $storage_engines; @@ -83,9 +98,12 @@ class PMA_StorageEngine . (empty($id) ? '' : ' id="' . $id . '"') . '>' . "\n";
foreach (PMA_StorageEngine::getStorageEngines() as $key => $details) { + // Don't show PERFORMANCE_SCHEMA engine (MySQL 5.5) + // Don't show MyISAM for Drizzle (allowed only for temporary tables) if (!$offerUnavailableEngines - && ($details['Support'] == 'NO' || $details['Support'] == 'DISABLED' - || $details['Engine'] == 'PERFORMANCE_SCHEMA')) { + && ($details['Support'] == 'NO' || $details['Support'] == 'DISABLED' + || $details['Engine'] == 'PERFORMANCE_SCHEMA') + || (PMA_DRIZZLE && $details['Engine'] == 'MyISAM')) { continue; }
diff --git a/libraries/Table.class.php b/libraries/Table.class.php index ba7a12d..3816b9b 100644 --- a/libraries/Table.class.php +++ b/libraries/Table.class.php @@ -323,7 +323,8 @@ class PMA_Table return PMA_Table::$cache[$db][$table]; }
- if (! isset(PMA_Table::$cache[$db][$table][$info])) { + // array_key_exists allows for null values + if (!array_key_exists($info, PMA_Table::$cache[$db][$table])) { if (! $disable_error) { trigger_error(__('unknown table status: ') . $info, E_USER_WARNING); } @@ -367,9 +368,8 @@ class PMA_Table $query = PMA_backquote($name) . ' ' . $type;
if ($length != '' - && ! preg_match('@^(DATE|DATETIME|TIME|TINYBLOB|TINYTEXT|BLOB|TEXT|' - . 'MEDIUMBLOB|MEDIUMTEXT|LONGBLOB|LONGTEXT|SERIAL|BOOLEAN)$@i', $type) - ) { + && !preg_match('@^(DATE|DATETIME|TIME|TINYBLOB|TINYTEXT|BLOB|TEXT|' + . 'MEDIUMBLOB|MEDIUMTEXT|LONGBLOB|LONGTEXT|SERIAL|BOOLEAN|UUID)$@i', $type)) { $query .= '(' . $length . ')'; }
@@ -401,6 +401,15 @@ class PMA_Table $query .= ' DEFAULT b'' . preg_replace('/[^01]/', '0', $default_value) . '''; + } elseif ($type == 'BOOLEAN') { + if (preg_match('/^1|T|TRUE|YES$/i', $default_value)) { + $query .= ' DEFAULT TRUE'; + } elseif (preg_match('/^0|F|FALSE|NO$/i', $default_value)) { + $query .= ' DEFAULT FALSE'; + } else { + // Invalid BOOLEAN value + $query .= ' DEFAULT '' . PMA_sqlAddSlashes($default_value) . '''; + } } else { $query .= ' DEFAULT '' . PMA_sqlAddSlashes($default_value) . '''; } @@ -493,7 +502,9 @@ class PMA_Table
// for a VIEW, $row_count is always false at this point if (false === $row_count || $row_count < $GLOBALS['cfg']['MaxExactCount']) { - if (! $is_view) { + // Make an exception for views in I_S and D_D schema in Drizzle, as these map to + // in-memory data and should execute fast enough + if (! $is_view || (PMA_DRIZZLE && PMA_is_system_schema($db))) { $row_count = PMA_DBI_fetch_value( 'SELECT COUNT(*) FROM ' . PMA_backquote($db) . '.' . PMA_backquote($table) @@ -738,15 +749,19 @@ class PMA_Table } } unset($analyzed_sql); - $server_sql_mode = PMA_DBI_fetch_value("SHOW VARIABLES LIKE 'sql_mode'", 0, 1); - // ANSI_QUOTES might be a subset of sql_mode, for example - // REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI - if (false !== strpos($server_sql_mode, 'ANSI_QUOTES')) { - $table_delimiter = 'quote_double'; - } else { + if (PMA_DRIZZLE) { $table_delimiter = 'quote_backtick'; + } else { + $server_sql_mode = PMA_DBI_fetch_value("SHOW VARIABLES LIKE 'sql_mode'", 0, 1); + // ANSI_QUOTES might be a subset of sql_mode, for example + // REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI + if (false !== strpos($server_sql_mode, 'ANSI_QUOTES')) { + $table_delimiter = 'quote_double'; + } else { + $table_delimiter = 'quote_backtick'; + } + unset($server_sql_mode); } - unset($server_sql_mode);
/* Find table name in query and replace it */ while ($parsed_sql[$i]['type'] != $table_delimiter) { @@ -1239,7 +1254,7 @@ class PMA_Table */ public function getUniqueColumns($backquoted = true) { - $sql = 'SHOW INDEX FROM ' . $this->getFullName(true) . ' WHERE Non_unique = 0'; + $sql = PMA_DBI_get_table_indexes_sql($this->getDbName(), $this->getName(), 'Non_unique = 0'); $uniques = PMA_DBI_fetch_result($sql, array('Key_name', null), 'Column_name');
$return = array(); @@ -1268,7 +1283,7 @@ class PMA_Table */ public function getIndexedColumns($backquoted = true) { - $sql = 'SHOW INDEX FROM ' . $this->getFullName(true) . ' WHERE Seq_in_index = 1'; + $sql = PMA_DBI_get_table_indexes_sql($this->getDbName(), $this->getName(), 'Seq_in_index = 1'); $indexed = PMA_DBI_fetch_result($sql, 'Column_name', 'Column_name');
$return = array(); diff --git a/libraries/Tracker.class.php b/libraries/Tracker.class.php index e71b7d6..97f62f0 100644 --- a/libraries/Tracker.class.php +++ b/libraries/Tracker.class.php @@ -67,13 +67,23 @@ class PMA_Tracker static protected $default_tracking_set;
/** + * Flags copied from `tracking` column definition in `pma_tracking` table. + * Used for column type conversion in Drizzle. + * + * @var array + */ + static private $tracking_set_flags = array('UPDATE','REPLACE','INSERT','DELETE','TRUNCATE','CREATE DATABASE', + 'ALTER DATABASE','DROP DATABASE','CREATE TABLE','ALTER TABLE','RENAME TABLE','DROP TABLE','CREATE INDEX', + 'DROP INDEX','CREATE VIEW','ALTER VIEW','DROP VIEW'); + + /** * Initializes settings. See phpMyAdmin/Documentation.html. * * @static * * @return nothing */ - static public function init() + static protected function init() { self::$pma_table = PMA_backquote($GLOBALS['cfg']['Server']['pmadb']) .".". PMA_backquote($GLOBALS['cfg']['Server']['tracking']); @@ -240,7 +250,7 @@ class PMA_Tracker
// Get data definition snapshot of table
- $columns = PMA_DBI_get_columns($dbname, $tablename, true); + $columns = PMA_DBI_get_columns($dbname, $tablename, null, true); // int indices to reduce size $columns = array_values($columns); // remove Privileges to reduce size @@ -248,16 +258,7 @@ class PMA_Tracker unset($columns[$i]['Privileges']); }
- $sql_query = ' - SHOW INDEX FROM ' . PMA_backquote($dbname) . '.' . PMA_backquote($tablename); - - $sql_result = PMA_DBI_query($sql_query); - - $indexes = array(); - - while ($row = PMA_DBI_fetch_assoc($sql_result)) { - $indexes[] = $row; - } + $indexes = PMA_DBI_get_table_indexes($dbname, $tablename);
$snapshot = array('COLUMNS' => $columns, 'INDEXES' => $indexes); $snapshot = serialize($snapshot); @@ -304,7 +305,7 @@ class PMA_Tracker '" . PMA_sqlAddSlashes($snapshot) . "', '" . PMA_sqlAddSlashes($create_sql) . "', '" . PMA_sqlAddSlashes("\n") . "', - '" . PMA_sqlAddSlashes($tracking_set) . "' )"; + '" . PMA_sqlAddSlashes(self::transformTrackingSet($tracking_set)) . "' )";
$result = PMA_query_as_controluser($sql_query);
@@ -390,7 +391,7 @@ class PMA_Tracker '" . PMA_sqlAddSlashes('') . "', '" . PMA_sqlAddSlashes($create_sql) . "', '" . PMA_sqlAddSlashes("\n") . "', - '" . PMA_sqlAddSlashes($tracking_set) . "' )"; + '" . PMA_sqlAddSlashes(self::transformTrackingSet($tracking_set)) . "' )";
$result = PMA_query_as_controluser($sql_query);
@@ -522,7 +523,9 @@ class PMA_Tracker " AND `table_name` = '" . PMA_sqlAddSlashes($tablename) . "' ";
if ($statement != "") { - $sql_query .= " AND FIND_IN_SET('" . $statement . "',tracking) > 0" ; + $sql_query .= PMA_DRIZZLE + ? ' AND tracking & ' . self::transformTrackingSet($statement) . ' <> 0' + : " AND FIND_IN_SET('" . $statement . "',tracking) > 0" ; } $row = PMA_DBI_fetch_array(PMA_query_as_controluser($sql_query)); return isset($row[0]) @@ -625,7 +628,7 @@ class PMA_Tracker } $data['ddlog'] = $ddlog; $data['dmlog'] = $dmlog; - $data['tracking'] = $mixed['tracking']; + $data['tracking'] = self::transformTrackingSet($mixed['tracking']); $data['schema_snapshot'] = $mixed['schema_snapshot'];
return $data; @@ -940,5 +943,57 @@ class PMA_Tracker } } } + + /** + * Transforms tracking set for Drizzle, which has no SET type + * + * Converts int<>string for Drizzle, does nothing for MySQL + * + * @param int|string $tracking_set + * @return int|string + */ + static private function transformTrackingSet($tracking_set) + { + if (!PMA_DRIZZLE) { + return $tracking_set; + } + + // init conversion array (key 3 doesn't exist in calculated array) + if (isset(self::$tracking_set_flags[3])) { + // initialize flags + $set = self::$tracking_set_flags; + $array = array(); + for ($i = 0; $i < count($set); $i++) { + $flag = 1 << $i; + $array[$flag] = $set[$i]; + $array[$set[$i]] = $flag; + } + self::$tracking_set_flags = $array; + } + + if (is_numeric($tracking_set)) { + // int > string conversion + $aflags = array(); + // count/2 - conversion table has both int > string and string > int values + for ($i = 0; $i < count(self::$tracking_set_flags)/2; $i++) { + $flag = 1 << $i; + if ($tracking_set & $flag) { + $aflags[] = self::$tracking_set_flags[$flag]; + } + } + $flags = implode(',', $aflags); + } else { + // string > int conversion + $flags = 0; + foreach (explode(',', $tracking_set) as $strflag) { + if ($strflag == '') { + continue; + } + $flags |= self::$tracking_set_flags[$strflag]; + } + } + + return $flags; + } } ?> diff --git a/libraries/advisory_rules.txt b/libraries/advisory_rules.txt index 58c75d1..4295763 100644 --- a/libraries/advisory_rules.txt +++ b/libraries/advisory_rules.txt @@ -44,7 +44,7 @@ rule 'Questions below 1,000' Let the server run for a longer time until it has executed a greater amount of queries. Current amount of Questions: %s | Questions
-rule 'Percentage of slow queries' [Questions > 0] +rule 'Percentage of slow queries' [Questions > 0 && !PMA_DRIZZLE] Slow_queries / Questions * 100 value >= 5 There is a lot of slow queries compared to the overall amount of Queries. @@ -58,14 +58,14 @@ rule 'Slow query rate' [Questions > 0] You might want to increase {long_query_time} or optimize the queries listed in the slow query log You have a slow query rate of %s per hour, you should have less than 1% per hour. | PMA_bytime(value,2)
-rule 'Long query time' +rule 'Long query time' [!PMA_DRIZZLE] long_query_time value >= 10 long_query_time is set to 10 seconds or more, thus only slow queries that take above 10 seconds are logged. It is suggested to set {long_query_time} to a lower value, depending on your environment. Usually a value of 1-5 seconds is suggested. long_query_time is currently set to %ds. | value
-rule 'Slow query logging' +rule 'Slow query logging' [!PMA_DRIZZLE] log_slow_queries value == 'OFF' The slow query log is disabled. @@ -109,6 +109,13 @@ rule 'Distribution' Percona documentation is at http://www.percona.com/docs/wiki/ 'percona' found in version_comment
+rule 'Distribution' + version + PMA_DRIZZLE + The MySQL manual only is accurate for official MySQL binaries. + Drizzle documentation is at http://docs.drizzle.org/ + Version string (%s) matches Drizzle versioning scheme | value + rule 'MySQL Architecture' system_memory value > 3072*1024 && !preg_match('/64/',version_compile_machine) && !preg_match('/64/',version_compile_os) @@ -120,7 +127,7 @@ rule 'MySQL Architecture' # Query cache
# Lame: 'ON' == 0 is true, so you need to compare 'ON' == '0' -rule 'Query cache disabled' +rule 'Query cache disabled' [!PMA_DRIZZLE] query_cache_size value == 0 || query_cache_type == 'OFF' || query_cache_type == '0' The query cache is not enabled. @@ -134,28 +141,28 @@ rule 'Query caching method' [!fired('Query cache disabled')] You are using the MySQL Query cache with a fairly high traffic database. It might be worth considering to use <a href="http://dev.mysql.com/doc/refman/5.5/en/ha-memcached.html">memcached</a> instead of the MySQL Query cache, especially if you have multiple slaves. The query cache is enabled and the server receives %d queries per second. This rule fires if there is more than 100 queries per second. | round(value,1)
-rule 'Query cache efficiency (%)' [Com_select + Qcache_hits > 0 && !fired('Query cache disabled')] +rule 'Query cache efficiency (%)' [!PMA_DRIZZLE && Com_select + Qcache_hits > 0 && !fired('Query cache disabled')] Qcache_hits / (Com_select + Qcache_hits) * 100 value < 20 Query cache not running efficiently, it has a low hit rate. Consider increasing {query_cache_limit}. The current query cache hit rate of %s% is below 20% | round(value,1)
-rule 'Query cache usage' [!fired('Query cache disabled')] +rule 'Query Cache usage' [!fired('Query cache disabled') && !PMA_DRIZZLE] 100 - Qcache_free_memory / query_cache_size * 100 value < 80 Less than 80% of the query cache is being utilized. This might be caused by {query_cache_limit} being too low. Flushing the query cache might help as well. The current ratio of free query cache memory to total query cache size is %s%. It should be above 80% | round(value,1)
-rule 'Query cache fragmentation' [!fired('Query cache disabled')] +rule 'Query cache fragmentation' [!fired('Query cache disabled') && !PMA_DRIZZLE] Qcache_free_blocks / (Qcache_total_blocks / 2) * 100 value > 20 The query cache is considerably fragmented. Severe fragmentation is likely to (further) increase Qcache_lowmem_prunes. This might be caused by many Query cache low memory prunes due to {query_cache_size} being too small. For a immediate but short lived fix you can flush the query cache (might lock the query cache for a long time). Carefully adjusting {query_cache_min_res_unit} to a lower value might help too, e.g. you can set it to the average size of your queries in the cache using this formula: (query_cache_size - qcache_free_memory) / qcache_queries_in_cache The cache is currently fragmented by %s% , with 100% fragmentation meaning that the query cache is an alternating pattern of free and used blocks. This value should be below 20%. | round(value,1)
-rule 'Query cache low memory prunes' [Qcache_inserts > 0 && !fired('Query cache disabled')] +rule 'Query cache low memory prunes' [!PMA_DRIZZLE && Qcache_inserts > 0 && !fired('Query cache disabled')] Qcache_lowmem_prunes / Qcache_inserts * 100 value > 0.1 Cached queries are removed due to low query cache memory from the query cache. @@ -263,14 +270,14 @@ rule 'Temp disk rate'
# # MyISAM index cache -rule 'MyISAM key buffer size' +rule 'MyISAM key buffer size' [!PMA_DRIZZLE] key_buffer_size value == 0 Key buffer is not initialized. No MyISAM indexes will be cached. Set {key_buffer_size} depending on the size of your MyISAM indexes. 64M is a good start. key_buffer_size is 0
-rule 'Max % MyISAM key buffer ever used' [key_buffer_size > 0] +rule 'Max % MyISAM key buffer ever used' [!PMA_DRIZZLE && key_buffer_size > 0] Key_blocks_used * key_cache_block_size / key_buffer_size * 100 value < 95 MyISAM key buffer (index cache) % used is low. @@ -278,14 +285,14 @@ rule 'Max % MyISAM key buffer ever used' [key_buffer_size > 0] max % MyISAM key buffer ever used: %s, this value should be above 95% | round(value,1)
# Don't fire if above rule fired - we don't need the same advice twice -rule 'Percentage of MyISAM key buffer used' [key_buffer_size > 0 && !fired('max % MyISAM key buffer ever used')] +rule 'Percentage of MyISAM key buffer used' [!PMA_DRIZZLE && key_buffer_size > 0 && !fired('max % MyISAM key buffer ever used')] ( 1 - Key_blocks_unused * key_cache_block_size / key_buffer_size) * 100 value < 95 MyISAM key buffer (index cache) % used is low. You may need to decrease the size of {key_buffer_size}, re-examine your tables to see if indexes have been removed, or examine queries and expectations about what indexes are being used. % MyISAM key buffer used: %s, this value should be above 95% | round(value,1)
-rule 'Percentage of index reads from memory' [Key_read_requests > 0] +rule 'Percentage of index reads from memory' [!PMA_DRIZZLE && Key_read_requests > 0] 100 - (Key_reads / Key_read_requests * 100) value < 95 The % of indexes that use the MyISAM key buffer is low. @@ -294,21 +301,21 @@ rule 'Percentage of index reads from memory' [Key_read_requests > 0]
# # other caches -rule 'Rate of table open' +rule 'Rate of table open' [!PMA_DRIZZLE] Opened_tables / Uptime value*60*60 > 10 The rate of opening tables is high. Opening tables requires disk I/O which is costly. Increasing {table_open_cache} might avoid this. Opened table rate: %s, this value should be less than 10 per hour | PMA_bytime(value,2)
-rule 'Percentage of used open files limit' +rule 'Percentage of used open files limit' [!PMA_DRIZZLE] Open_files / open_files_limit * 100 value > 85 The number of open files is approaching the max number of open files. You may get a "Too many open files" error. Consider increasing {open_files_limit}, and check the error log when restarting after changing open_files_limit. The number of opened files is at %s% of the limit. It should be below 85% | round(value,1)
-rule 'Rate of open files' +rule 'Rate of open files' [!PMA_DRIZZLE] Open_files / Uptime value * 60 * 60 > 5 The rate of opening files is high. @@ -329,28 +336,28 @@ rule 'Table lock wait rate' Optimize queries and/or use InnoDB to reduce lock wait. Table lock wait rate: %s, this value should be less than 1 per hour | PMA_bytime(value,2)
-rule 'Thread cache' +rule 'Thread cache' [!PMA_DRIZZLE] thread_cache_size value < 1 Thread cache is disabled, resulting in more overhead from new connections to MySQL. Enable the thread cache by setting {thread_cache_size} > 0. The thread cache is set to 0
-rule 'Thread cache hit rate %' [thread_cache_size > 0] +rule 'Thread cache hit rate %' [!PMA_DRIZZLE && thread_cache_size > 0] 100 - Threads_created / Connections value < 80 Thread cache is not efficient. Increase {thread_cache_size}. Thread cache hitrate: %s%, this value should be above 80% | round(value,1)
-rule 'Threads that are slow to launch' [slow_launch_time > 0] +rule 'Threads that are slow to launch' [!PMA_DRIZZLE && slow_launch_time > 0] Slow_launch_threads value > 0 There are too many threads that are slow to launch. This generally happens in case of general system overload as it is pretty simple operations. You might want to monitor your system load carefully. %s thread(s) took longer than %s seconds to start, it should be 0 | value, slow_launch_time
-rule 'Slow launch time' +rule 'Slow launch time' [!PMA_DRIZZLE] slow_launch_time value > 2 Slow_launch_threads is above 2s @@ -359,7 +366,7 @@ rule 'Slow launch time'
# #Connections -rule 'Percentage of used connections' +rule 'Percentage of used connections' [!PMA_DRIZZLE] Max_used_connections / max_connections * 100 value > 80 The maximum amount of used connections is getting close to the value of max_connections. @@ -396,7 +403,7 @@ rule 'Rate of aborted clients'
# # InnoDB -rule 'Is InnoDB disabled?' +rule 'Is InnoDB disabled?' [!PMA_DRIZZLE] have_innodb value != "YES" You do not have InnoDB enabled. @@ -426,7 +433,7 @@ rule 'InnoDB buffer pool size' [system_memory > 0]
# # other -rule 'MyISAM concurrent inserts' +rule 'MyISAM concurrent inserts' [!PMA_DRIZZLE] concurrent_insert value === 0 || value === 'NEVER' Enable concurrent_insert by setting it to 1 diff --git a/libraries/blobstreaming.lib.php b/libraries/blobstreaming.lib.php index d3827f9..cdcbb0b 100644 --- a/libraries/blobstreaming.lib.php +++ b/libraries/blobstreaming.lib.php @@ -26,7 +26,7 @@ function initPBMSDatabase() return true; } if ($target == "") { - if (($current_db != 'pbxt') && ($current_db != 'mysql') && ($current_db != 'information_schema')) { + if ($current_db != 'pbxt' && !PMA_is_system_schema($current_db, true)) { $target = $current_db; } } @@ -93,33 +93,50 @@ function checkBLOBStreamingPlugins() $serverCfg['socket'] = ""; }
- $has_blobstreaming = false; - if (PMA_MYSQL_INT_VERSION >= 50109) { + $has_blobstreaming = PMA_cacheGet('has_blobstreaming', true);
- // Retrieve MySQL plugins - $existing_plugins = PMA_DBI_fetch_result('SHOW PLUGINS'); + if ($has_blobstreaming === null) { + if (!PMA_DRIZZLE && PMA_MYSQL_INT_VERSION >= 50109) {
- foreach ($existing_plugins as $one_existing_plugin) { - // check if required plugins exist - if ( strtolower($one_existing_plugin['Library']) == 'libpbms.so' - && $one_existing_plugin['Status'] == "ACTIVE") { - $has_blobstreaming = true; - break; + // Retrieve MySQL plugins + $existing_plugins = PMA_DBI_fetch_result('SHOW PLUGINS'); + + foreach ($existing_plugins as $one_existing_plugin) { + // check if required plugins exist + if ( strtolower($one_existing_plugin['Library']) == 'libpbms.so' + && $one_existing_plugin['Status'] == "ACTIVE") { + $has_blobstreaming = true; + break; + } } + unset($existing_plugins, $one_existing_plugin); + } else if (PMA_DRIZZLE) { + $has_blobstreaming = (bool)PMA_DBI_fetch_result( + "SELECT 1 + FROM data_dictionary.plugins + WHERE module_name = 'PBMS' + AND is_active = true + LIMIT 1"); } - unset($existing_plugins, $one_existing_plugin); + PMA_cacheSet('has_blobstreaming', $has_blobstreaming, true); }
// set variable indicating BS plugin existence $PMA_Config->set('BLOBSTREAMING_PLUGINS_EXIST', $has_blobstreaming);
+ if (!$has_blobstreaming) { + PMA_cacheSet('skip_blobstreaming', true, true); + return false; + } + if ($has_blobstreaming) { $bs_variables = PMA_BS_GetVariables();
// if no BS variables exist, set plugin existence to false and return - if (count($bs_variables) <= 0) { + if (count($bs_variables) == 0) { $PMA_Config->set('BLOBSTREAMING_PLUGINS_EXIST', false); PMA_cacheSet('skip_blobstreaming', true, true); + PMA_cacheSet('has_blobstreaming', false, true); return false; } // end if (count($bs_variables) <= 0)
@@ -137,6 +154,7 @@ function checkBLOBStreamingPlugins() // the pbms client lib and PHP extension to make use of blob streaming. $PMA_Config->set('BLOBSTREAMING_PLUGINS_EXIST', false); PMA_cacheSet('skip_blobstreaming', true, true); + PMA_cacheSet('has_blobstreaming', false, true); return false; }
diff --git a/libraries/build_html_for_db.lib.php b/libraries/build_html_for_db.lib.php index 8d64549..422beff 100644 --- a/libraries/build_html_for_db.lib.php +++ b/libraries/build_html_for_db.lib.php @@ -79,8 +79,7 @@ function PMA_buildHtmlForDb($current, $is_superuser, $checkall, $url_query, $col $out .= '<td class="tool">'; $out .= '<input type="checkbox" name="selected_dbs[]" title="' . htmlspecialchars($current['SCHEMA_NAME']) . '" value="' . htmlspecialchars($current['SCHEMA_NAME']) . '" ';
- if ($current['SCHEMA_NAME'] != 'mysql' - && $current['SCHEMA_NAME'] != 'information_schema') { + if (!PMA_is_system_schema($current['SCHEMA_NAME'], true)) { $out .= (empty($checkall) ? '' : 'checked="checked" ') . '/>'; } else { $out .= ' disabled="disabled" />'; @@ -143,7 +142,7 @@ function PMA_buildHtmlForDb($current, $is_superuser, $checkall, $url_query, $col } }
- if ($is_superuser) { + if ($is_superuser && !PMA_DRIZZLE) { $out .= '<td class="tool">' . '<a onclick="' . 'if (window.parent.setDb) window.parent.setDb('' . PMA_jsFormat($current['SCHEMA_NAME']) . '');' diff --git a/libraries/check_user_privileges.lib.php b/libraries/check_user_privileges.lib.php index 376992c..726b4a6 100644 --- a/libraries/check_user_privileges.lib.php +++ b/libraries/check_user_privileges.lib.php @@ -134,6 +134,15 @@ function PMA_analyseShowGrant() PMA_cacheSet('dbs_where_create_table_allowed', $GLOBALS['dbs_where_create_table_allowed'], true); } // end function
-PMA_analyseShowGrant(); +if (!PMA_DRIZZLE) { + PMA_analyseShowGrant(); +} else { + // todo: for simple_user_policy only database with user's login can be created (unless logged in as root) + $GLOBALS['is_create_db_priv'] = $GLOBALS['is_superuser']; + $GLOBALS['is_process_priv'] = false; + $GLOBALS['is_reload_priv'] = false; + $GLOBALS['db_to_create'] = ''; + $GLOBALS['dbs_where_create_table_allowed'] = array('*'); +}
?> diff --git a/libraries/common.inc.php b/libraries/common.inc.php index d40cd7b..26e7a01 100644 --- a/libraries/common.inc.php +++ b/libraries/common.inc.php @@ -943,6 +943,14 @@ if (! defined('PMA_MINIMUM_COMMON')) { PMA_fatalError(__('You should upgrade to %s %s or later.'), array('MySQL', '5.0.15')); }
+ if (PMA_DRIZZLE) { + // DisableIS must be set to false for Drizzle, it maps SHOW commands + // to INFORMATION_SCHEMA queries anyway so it's fast on large servers + $cfg['Server']['DisableIS'] = false; + // SHOW OPEN TABLES is not supported by Drizzle + $cfg['SkipLockedTables'] = false; + } + /** * SQL Parser code */ diff --git a/libraries/common.lib.php b/libraries/common.lib.php index 0a4bd5d..11f9f32 100644 --- a/libraries/common.lib.php +++ b/libraries/common.lib.php @@ -718,10 +718,10 @@ function PMA_getTableList($db, $tables = null, $limit_offset = 0, $limit_count = // in this case.
// set this because PMA_Table::countRecords() can use it - $tbl_is_view = PMA_Table::isView($db, $table['Name']); + $tbl_is_view = $table['TABLE_TYPE'] == 'VIEW';
- if ($tbl_is_view || 'information_schema' == $db) { - $table['Rows'] = PMA_Table::countRecords($db, $table['Name']); + if ($tbl_is_view || PMA_is_system_schema($db)) { + $table['Rows'] = PMA_Table::countRecords($db, $table['Name'], false, true); } }
@@ -953,7 +953,7 @@ function PMA_showMessage($message, $sql_query = null, $type = 'notice', $is_view if (strlen($GLOBALS['table']) && $GLOBALS['sql_query'] == 'TRUNCATE TABLE ' . PMA_backquote($GLOBALS['table']) ) { - if (PMA_Table::sGetStatusInfo($GLOBALS['db'], $GLOBALS['table'], 'Index_length') > 1024) { + if (PMA_Table::sGetStatusInfo($GLOBALS['db'], $GLOBALS['table'], 'Index_length') > 1024 && !PMA_DRIZZLE) { PMA_DBI_try_query('REPAIR TABLE ' . PMA_backquote($GLOBALS['table'])); } } @@ -1330,6 +1330,10 @@ function PMA_profilingCheckbox($sql_query) */ function PMA_formatByteDown($value, $limes = 6, $comma = 0) { + if ($value === null) { + return null; + } + $byteUnits = array( /* l10n: shortcuts for Byte */ __('B'), @@ -3542,7 +3546,7 @@ function PMA_getFunctionsForField($field, $insert_mode) && $field['Key'] == 'PRI' && ($field['Type'] == 'char(36)' || $field['Type'] == 'varchar(36)') ) { - $default_function = $cfg['DefaultFunctions']['pk_char36']; + $default_function = $cfg['DefaultFunctions']['FUNC_UUID']; } // this is set only when appropriate and is always true if (isset($field['display_binary_as_hex'])) { @@ -3682,4 +3686,24 @@ function PMA_currentUserHasPrivilege($priv, $db = null, $tbl = null) return false; }
+/** + * Returns server type for current connection + * + * Known types are: Drizzle, MariaDB and MySQL (default) + * + * @return string + */ +function PMA_getServerType() +{ + $server_type = 'MySQL'; + if (PMA_DRIZZLE) { + $server_type = 'Drizzle'; + } else if (strpos(PMA_MYSQL_STR_VERSION, 'mariadb') !== false) { + $server_type = 'MariaDB'; + } else if (stripos(PMA_MYSQL_VERSION_COMMENT, 'percona') !== false) { + $server_type = 'Percona Server'; + } + return $server_type; +} + ?> diff --git a/libraries/config.default.php b/libraries/config.default.php index 9dea34a..0ee64f6 100644 --- a/libraries/config.default.php +++ b/libraries/config.default.php @@ -427,7 +427,7 @@ $cfg['Servers'][$i]['AllowDeny']['order'] = ''; $cfg['Servers'][$i]['AllowDeny']['rules'] = array();
/** - * Disable use of INFORMATION_SCHEMA + * Disable use of INFORMATION_SCHEMA. Is always 'true' for Drizzle. * * @see http://sf.net/support/tracker.php?aid=1849494 * @see http://bugs.mysql.com/19588 @@ -616,6 +616,7 @@ $cfg['MemoryLimit'] = '0';
/** * mark used tables, make possible to show locked tables (since MySQL 3.23.30) + * Is ignored for Drizzle. * * @global boolean $cfg['SkipLockedTables'] */ @@ -2806,9 +2807,9 @@ if ($cfg['ShowFunctionFields']) { 'FUNC_CHAR' => '', 'FUNC_DATE' => '', 'FUNC_NUMBER' => '', - 'FUNC_SPATIAL' => 'GeomFromText', + 'FUNC_SPATIAL' => 'GeomFromText', + 'FUNC_UUID' => 'UUID', 'first_timestamp' => 'NOW', - 'pk_char36' => 'UUID', ); } // end if
diff --git a/libraries/config/validate.lib.php b/libraries/config/validate.lib.php index 2b60725..989b324 100644 --- a/libraries/config/validate.lib.php +++ b/libraries/config/validate.lib.php @@ -175,7 +175,7 @@ function test_php_errormsg($start = true) /** * Test database connection * - * @param string $extension 'mysql' or 'mysqli' + * @param string $extension 'drizzle', 'mysql' or 'mysqli' * @param string $connect_type 'tcp' or 'socket' * @param string $host * @param string $port @@ -191,7 +191,33 @@ function test_db_connection($extension, $connect_type, $host, $port, $socket, $u $socket = empty($socket) || $connect_type == 'tcp' ? null : $socket; $port = empty($port) || $connect_type == 'socket' ? null : ':' . $port; $error = null; - if ($extension == 'mysql') { + if ($extension == 'drizzle') { + while (1) { + $drizzle = @drizzle_create(); + if (!$drizzle) { + $error = __('Could not initialize Drizzle connection library'); + break; + } + $conn = $socket + ? @drizzle_con_add_uds($socket, $user, $pass, null, 0) + : @drizzle_con_add_tcp($drizzle, $host, $port, $user, $pass, null, 0); + if (!$conn) { + $error = __('Could not connect to Drizzle server'); + drizzle_free($drizzle); + break; + } + // connection object is set up but we have to send some query to actually connect + $res = @drizzle_query($conn, 'SELECT 1'); + if (!$res) { + $error = __('Could not connect to Drizzle server'); + } else { + drizzle_result_free($res); + } + drizzle_con_free($conn); + drizzle_free($drizzle); + break; + } + } else if ($extension == 'mysql') { $conn = @mysql_connect($host . $socket . $port, $user, $pass); if (!$conn) { $error = __('Could not connect to MySQL server'); diff --git a/libraries/data_dictionary_relations.lib.php b/libraries/data_dictionary_relations.lib.php new file mode 100644 index 0000000..51e9dcc --- /dev/null +++ b/libraries/data_dictionary_relations.lib.php @@ -0,0 +1,163 @@ +<?php +/* vim: set expandtab sw=4 ts=4 sts=4: */ +/** + * + * @package phpMyAdmin + */ + +/** + * + */ +$GLOBALS['data_dictionary_relations'] = array( + 'CHARACTER_SETS' => array( + 'DEFAULT_COLLATE_NAME' => array( + 'foreign_db' => 'data_dictionary', + 'foreign_table' => 'COLLATIONS', + 'foreign_field' => 'COLLATION_NAME' + ) + ), + 'COLLATIONS' => array( + 'CHARACTER_SET_NAME' => array( + 'foreign_db' => 'data_dictionary', + 'foreign_table' => 'CHARACTER_SETS', + 'foreign_field' => 'CHARACTER_SET_NAME' + ) + ), + 'COLUMNS' => array( + 'TABLE_SCHEMA' => array( + 'foreign_db' => 'data_dictionary', + 'foreign_table' => 'SCHEMAS', + 'foreign_field' => 'SCHEMA_NAME' + ), + 'COLLATION_NAME' => array( + 'foreign_db' => 'data_dictionary', + 'foreign_table' => 'COLLATIONS', + 'foreign_field' => 'COLLATION_NAME' + ) + ), + 'INDEXES' => array( + 'TABLE_SCHEMA' => array( + 'foreign_db' => 'data_dictionary', + 'foreign_table' => 'SCHEMAS', + 'foreign_field' => 'SCHEMA_NAME' + ) + ), + 'INDEX_PARTS' => array( + 'TABLE_SCHEMA' => array( + 'foreign_db' => 'data_dictionary', + 'foreign_table' => 'SCHEMAS', + 'foreign_field' => 'SCHEMA_NAME' + ) + ), + 'INNODB_LOCKS' => array( + 'LOCK_TRX_ID' => array( + 'foreign_db' => 'data_dictionary', + 'foreign_table' => 'INNODB_TRX', + 'foreign_field' => 'TRX_ID' + ) + ), + 'INNODB_LOCK_WAITS' => array( + 'REQUESTING_TRX_ID' => array( + 'foreign_db' => 'data_dictionary', + 'foreign_table' => 'INNODB_TRX', + 'foreign_field' => 'TRX_ID' + ), + 'REQUESTED_LOCK_ID' => array( + 'foreign_db' => 'data_dictionary', + 'foreign_table' => 'INNODB_LOCKS', + 'foreign_field' => 'LOCK_ID' + ), + 'BLOCKING_TRX_ID' => array( + 'foreign_db' => 'data_dictionary', + 'foreign_table' => 'INNODB_TRX', + 'foreign_field' => 'TRX_ID' + ), + 'BLOCKING_LOCK_ID' => array( + 'foreign_db' => 'data_dictionary', + 'foreign_table' => 'INNODB_LOCKS', + 'foreign_field' => 'LOCK_ID' + ) + ), + 'INNODB_SYS_COLUMNS' => array( + 'TABLE_ID' => array( + 'foreign_db' => 'data_dictionary', + 'foreign_table' => 'INNODB_SYS_TABLES', + 'foreign_field' => 'TABLE_ID' + ) + ), + 'INNODB_SYS_FIELDS' => array( + 'INDEX_ID' => array( + 'foreign_db' => 'data_dictionary', + 'foreign_table' => 'INNODB_SYS_INDEXES', + 'foreign_field' => 'INDEX_ID' + ) + ), + 'INNODB_SYS_INDEXES' => array( + 'TABLE_ID' => array( + 'foreign_db' => 'data_dictionary', + 'foreign_table' => 'INNODB_SYS_TABLES', + 'foreign_field' => 'TABLE_ID' + ) + ), + 'INNODB_SYS_TABLESTATS' => array( + 'TABLE_ID' => array( + 'foreign_db' => 'data_dictionary', + 'foreign_table' => 'INNODB_SYS_TABLES', + 'foreign_field' => 'TABLE_ID' + ) + ), + 'PLUGINS' => array( + 'MODULE_NAME' => array( + 'foreign_db' => 'data_dictionary', + 'foreign_table' => 'MODULES', + 'foreign_field' => 'MODULE_NAME' + ) + ), + 'SCHEMAS' => array( + 'DEFAULT_COLLATION_NAME' => array( + 'foreign_db' => 'data_dictionary', + 'foreign_table' => 'COLLATIONS', + 'foreign_field' => 'COLLATION_NAME' + ) + ), + 'TABLES' => array( + 'TABLE_SCHEMA' => array( + 'foreign_db' => 'data_dictionary', + 'foreign_table' => 'SCHEMAS', + 'foreign_field' => 'SCHEMA_NAME' + ), + 'TABLE_COLLATION' => array( + 'foreign_db' => 'data_dictionary', + 'foreign_table' => 'COLLATIONS', + 'foreign_field' => 'COLLATION_NAME' + ) + ), + 'TABLE_CACHE' => array( + 'TABLE_SCHEMA' => array( + 'foreign_db' => 'data_dictionary', + 'foreign_table' => 'SCHEMAS', + 'foreign_field' => 'SCHEMA_NAME' + ) + ), + 'TABLE_CONSTRAINTS' => array( + 'CONSTRAINT_SCHEMA' => array( + 'foreign_db' => 'data_dictionary', + 'foreign_table' => 'SCHEMAS', + 'foreign_field' => 'SCHEMA_NAME' + ), + 'TABLE_SCHEMA' => array( + 'foreign_db' => 'data_dictionary', + 'foreign_table' => 'SCHEMAS', + 'foreign_field' => 'SCHEMA_NAME' + ) + ), + 'TABLE_DEFINITION_CACHE' => array( + 'TABLE_SCHEMA' => array( + 'foreign_db' => 'data_dictionary', + 'foreign_table' => 'SCHEMAS', + 'foreign_field' => 'SCHEMA_NAME' + ) + ) +); + +?> \ No newline at end of file diff --git a/libraries/data_mysql.inc.php b/libraries/data_drizzle.inc.php similarity index 62% copy from libraries/data_mysql.inc.php copy to libraries/data_drizzle.inc.php index d504d15..907aac7 100644 --- a/libraries/data_mysql.inc.php +++ b/libraries/data_drizzle.inc.php @@ -8,27 +8,22 @@ // VARCHAR, TINYINT, TEXT and DATE are listed first, based on estimated popularity $cfg['ColumnTypes'] = !empty($cfg['ColumnTypes']) ? $cfg['ColumnTypes'] : array( // most used - 'INT', + 'INTEGER', 'VARCHAR', 'TEXT', 'DATE',
// numeric 'NUMERIC' => array( - 'TINYINT', - 'SMALLINT', - 'MEDIUMINT', - 'INT', + 'INTEGER', 'BIGINT', '-', 'DECIMAL', - 'FLOAT', 'DOUBLE', - 'REAL', '-', - 'BIT', 'BOOLEAN', 'SERIAL', + 'UUID', ),
@@ -38,63 +33,29 @@ $cfg['ColumnTypes'] = !empty($cfg['ColumnTypes']) ? $cfg['ColumnTypes'] : array( 'DATETIME', 'TIMESTAMP', 'TIME', - 'YEAR', ),
// Text 'STRING' => array( - 'CHAR', 'VARCHAR', - '-', - 'TINYTEXT', 'TEXT', - 'MEDIUMTEXT', - 'LONGTEXT', - '-', - 'BINARY', 'VARBINARY', - '-', - 'TINYBLOB', - 'MEDIUMBLOB', 'BLOB', - 'LONGBLOB', - '-', 'ENUM', - 'SET', - ), - - 'SPATIAL' => array( - 'GEOMETRY', - 'POINT', - 'LINESTRING', - 'POLYGON', - 'MULTIPOINT', - 'MULTILINESTRING', - 'MULTIPOLYGON', - 'GEOMETRYCOLLECTION', ), );
$cfg['AttributeTypes'] = !empty($cfg['AttributeTypes']) ? $cfg['AttributeTypes'] : array( '', - 'BINARY', - 'UNSIGNED', - 'UNSIGNED ZEROFILL', 'on update CURRENT_TIMESTAMP', );
if ($cfg['ShowFunctionFields']) { $cfg['RestrictColumnTypes'] = !empty($cfg['RestrictColumnTypes']) ? $cfg['RestrictColumnTypes'] : array( - 'TINYINT' => 'FUNC_NUMBER', - 'SMALLINT' => 'FUNC_NUMBER', - 'MEDIUMINT' => 'FUNC_NUMBER', - 'INT' => 'FUNC_NUMBER', + 'INTEGER' => 'FUNC_NUMBER', 'BIGINT' => 'FUNC_NUMBER', 'DECIMAL' => 'FUNC_NUMBER', - 'FLOAT' => 'FUNC_NUMBER', 'DOUBLE' => 'FUNC_NUMBER', - 'REAL' => 'FUNC_NUMBER', - 'BIT' => 'FUNC_NUMBER', 'BOOLEAN' => 'FUNC_NUMBER', 'SERIAL' => 'FUNC_NUMBER',
@@ -102,32 +63,13 @@ if ($cfg['ShowFunctionFields']) { 'DATETIME' => 'FUNC_DATE', 'TIMESTAMP' => 'FUNC_DATE', 'TIME' => 'FUNC_DATE', - 'YEAR' => 'FUNC_DATE',
- 'CHAR' => 'FUNC_CHAR', 'VARCHAR' => 'FUNC_CHAR', - 'TINYTEXT' => 'FUNC_CHAR', 'TEXT' => 'FUNC_CHAR', - 'MEDIUMTEXT' => 'FUNC_CHAR', - 'LONGTEXT' => 'FUNC_CHAR', - 'BINARY' => 'FUNC_CHAR', 'VARBINARY' => 'FUNC_CHAR', - 'TINYBLOB' => 'FUNC_CHAR', - 'MEDIUMBLOB' => 'FUNC_CHAR', 'BLOB' => 'FUNC_CHAR', - 'LONGBLOB' => 'FUNC_CHAR', + 'UUID' => 'FUNC_UUID', 'ENUM' => '', - 'SET' => '', - - 'GEOMETRY' => 'FUNC_SPATIAL', - 'POINT' => 'FUNC_SPATIAL', - 'LINESTRING' => 'FUNC_SPATIAL', - 'POLYGON' => 'FUNC_SPATIAL', - 'MULTIPOINT' => 'FUNC_SPATIAL', - 'MULTILINESTRING' => 'FUNC_SPATIAL', - 'MULTIPOLYGON' => 'FUNC_SPATIAL', - 'GEOMETRYCOLLECTION' => 'FUNC_SPATIAL', - );
$restrict_functions = array( @@ -138,23 +80,15 @@ if ($cfg['ShowFunctionFields']) { 'COMPRESS', 'DATABASE', 'DAYNAME', - 'DES_DECRYPT', - 'DES_ENCRYPT', - 'ENCRYPT', 'HEX', - 'INET_NTOA', 'LOAD_FILE', 'LOWER', 'LTRIM', 'MD5', 'MONTHNAME', - 'OLD_PASSWORD', - 'PASSWORD', 'QUOTE', 'REVERSE', 'RTRIM', - 'SHA1', - 'SOUNDEX', 'SPACE', 'TRIM', 'UNCOMPRESS', @@ -165,17 +99,20 @@ if ($cfg['ShowFunctionFields']) { 'VERSION', ),
+ 'FUNC_UUID' => array( + 'UUID', + ), + 'FUNC_DATE' => arr y( howFunctionFields']) { ColumnTypes']) ? $cfg['RestrictColumnTypes'] : array( E) { '" value="' . htmlspecialchars($current['SCHEMA_NAME']) . '" '; used. alue,1) short lived fix you can flush the query cache (might lock the query cache for a long time). Carefully adjusting {query_cache_min_res_unit} to a lower value might help too, e.g. you can set it to the average size of your queries in the cache using this formula: (query_cache_size - qcache_free_memory) / qcache_queries_in_cache �! @d��� �d��� H�jrI+ �[��� �BnqI+ �`nqI+ @d��� `BnqI+ d��� pd��� hd��� 8k�qI+ �p� �d��� uJnqI+ �joqI+ �[��� PZ��� k`nqI+ G H I J K M N O P @d��� �d��� H�ArI+ ]��� �BnqI+ �`nqI+ @d��� 0�rI+ uJnqI+ �rI+ ��rI+ �rI+ ��rI+ � �rI+ �joqI+ H�ArI+ ]��� `[��� k`nqI+ 8�ArI+ ]��� �[��� k`nqI+ (�ArI+ ]��� �[��� k`nqI+ �ArI+ ]��� �[��� k`nqI+ ��rI+ uJnqI+ � �rI+ pV��� �rI+ eInqI+ ��rI+ �\��� yrI+ eInqI+ �rI+ �\��� ZrI+ eInqI+ ��rI+ �rI+ ��rI+ �rI+ �$�rI+ ��rI+ � �rI+ �joqI+ 8k�qI+ ��qI+ �d��� p[rI+ p^��� @]��� k`nqI+ 5 6 7 8 : <