[Phpmyadmin-git] [SCM] phpMyAdmin branch, STABLE, updated. RELEASE_3_3_9-14-g3e59b4b

Marc Delisle lem9 at users.sourceforge.net
Mon Jan 3 13:31:05 CET 2011


The branch, STABLE has been updated
       via  3e59b4b503aa980b9a592812d1a20bb857789d2f (commit)
       via  08a6fd9c12f1520518b044d87e2a4da189649580 (commit)
       via  97716f5a5a8b2ac24d2965e6b8faf6b747616d85 (commit)
       via  eaac45dfda2daa345edc5165b30bedea5a3f18a0 (commit)
       via  1ceccbd50cc0359ac2543e4283a70b2440752b59 (commit)
       via  8afdcbe2b89888b4e7e3ca58224cb01ebe8db73c (commit)
       via  b6f717a6025c3785430c4cf317cfa5786564729b (commit)
       via  2ba852dc5ca3dc9d2697ee29bd11ad61ab987553 (commit)
       via  bc0b9fa744bd1b1a7ff460f728248e581ee106f0 (commit)
       via  b1103e2db99405d032a230ed50f0b88b799605a3 (commit)
       via  f805097b86fabd3d4c8dff1f2324efdae1ca0d70 (commit)
       via  d6a7bd40faa240c23016ce482c36650294faa13e (commit)
       via  63aec5b3280c39277c54d0789a1b511fd2f3b7ae (commit)
       via  8277c92e25ce1001c6b0479e91698bcf5c02c618 (commit)
       via  5f4604c9bb4de2cdc2bf6b61f0ac55c898dd964e (commit)
       via  81a338db80012ca67009ac780ee1bffe38dd1ad1 (commit)
       via  bbf5941c21eb5a28bc0b0b5c8b3849bb059a5baa (commit)
       via  5815d6fa7ebf65432751251b6f905858ee90e433 (commit)
       via  848989bdb6da22d99b5a5b04ad83964db973df43 (commit)
       via  7393468b126dbf20e1e4ef4cdf9d3dd330332de2 (commit)
       via  4b3d5c768bc0c1db2d5f1c986027dc2ec0ca3f63 (commit)
       via  252ab527bc485db3f8987433ea7b1d1baa371ea8 (commit)
       via  540cd447a3f8b8e324daf9ccd2ec8112687a690f (commit)
       via  74f593aa867f631d1e80c177bbd61e70a5c2af30 (commit)
       via  f2d82daad8ec37ec4ed3c3e04e2f34ba1d72b489 (commit)
       via  8dc289c433eb08e082ce2199bb532884fa25a9c8 (commit)
       via  60e468cd18f6e5393aae8f5ad680310eb44a9c39 (commit)
       via  266b8e3aaff8269f65ece2c4531841c8550c0eff (commit)
      from  19e56eacec926545507d9805b49b34c682e17d0a (commit)


- Log -----------------------------------------------------------------
commit 3e59b4b503aa980b9a592812d1a20bb857789d2f
Merge: 19e56eacec926545507d9805b49b34c682e17d0a 08a6fd9c12f1520518b044d87e2a4da189649580
Author: Marc Delisle <marc at infomarc.info>
Date:   Mon Jan 3 07:07:55 2011 -0500

    Merge branch 'MAINT_3_3_9' into STABLE

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                         |   12 ++++++
 Documentation.html                |   30 +++++---------
 README                            |    6 +-
 db_operations.php                 |   55 +++++++++++++++++++++------
 lang/polish-utf-8.inc.php         |   74 ++++++++++++++++++------------------
 lang/slovenian-utf-8.inc.php      |    8 ++--
 libraries/Config.class.php        |    2 +-
 libraries/db_table_exists.lib.php |    2 +-
 libraries/export/sql.php          |    2 +-
 libraries/js_escape.lib.php       |    1 +
 libraries/sqlparser.data.php      |    6 +--
 libraries/sqlparser.lib.php       |   31 +++++++++------
 pdf_pages.php                     |    2 +-
 server_replication.php            |    4 +-
 tbl_change.php                    |    1 +
 themes/.gitignore                 |    1 +
 translators.html                  |    4 +-
 17 files changed, 141 insertions(+), 100 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 8fad918..a15b8fc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,18 @@ phpMyAdmin - ChangeLog
 $Id$
 $HeadURL: https://phpmyadmin.svn.sourceforge.net/svnroot/phpmyadmin/trunk/phpMyAdmin/ChangeLog $
 
+3.3.9.0 (2011-01-03)
+- bug [doc] Fix references to MySQL doc
+- patch #3101490 Default function for TIMESTAMP, thanks to jirand - jirand
+- bug #3103853 [js] Double quotes were not escaped in generated js
+- bug #3077463 [core] Events were not copied when copying/renaming database
+- bug #1762306 [core] Copy database with view of a view
+- patch #3117535 [replication] Add quotes to database in initial statement,
+  thanks to Craig Duncan - duncan3dc
+- bug #3112614 [pdf schema] Scratchboard for PDF pages not working
+- bug #3125606 [parser] Query for table "level" causes strange display
+- bug #3127904 [parser] Close all opened round brackets indents
+
 3.3.8.1 (2010-11-29)
 - bug #3115519 (private) [security] XSS on db search, see PMASA-2010-8
 
diff --git a/Documentation.html b/Documentation.html
index bf30068..0a5cf58 100644
--- a/Documentation.html
+++ b/Documentation.html
@@ -10,7 +10,7 @@ vim: expandtab ts=4 sw=4 sts=4 tw=78
     <link rel="icon" href="./favicon.ico" type="image/x-icon" />
     <link rel="shortcut icon" href="./favicon.ico" type="image/x-icon" />
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>phpMyAdmin 3.3.8.1 - Documentation</title>
+    <title>phpMyAdmin 3.3.9 - Documentation</title>
     <link rel="stylesheet" type="text/css" href="docs.css" />
 </head>
 
@@ -18,7 +18,7 @@ vim: expandtab ts=4 sw=4 sts=4 tw=78
 <div id="header">
     <h1>
         <a href="http://www.phpmyadmin.net/">php<span class="myadmin">MyAdmin</span></a>
-        3.3.8.1
+        3.3.9 
         Documentation
     </h1>
 </div>
@@ -53,9 +53,6 @@ vim: expandtab ts=4 sw=4 sts=4 tw=78
             <li>License: <a href="license.php">LICENSE</a></li>
         </ul>
     </li>
-    <li><div class="l10n">Documentation version:</div>
-        <i>$Id$</i>
-    </li>
 </ul>
 
 <!-- REQUIREMENTS -->
@@ -2701,7 +2698,7 @@ setfacl -d -m "g:www-data:rwx" tmp
     <a href="#faq1_12">1.12 I have lost my MySQL root password, what can I do?</a></h4>
 
 <p> The MySQL manual explains how to
-    <a href="http://www.mysql.com/doc/R/e/Resetting_permissions.html">
+    <a href="http://dev.mysql.com/doc/mysql/en/resetting-permissions.html">
     reset the permissions</a>.</p>
 
 <h4 id="faq1_13">
@@ -2767,7 +2764,7 @@ setfacl -d -m "g:www-data:rwx" tmp
     support?</a></h4>
 
 <p> Since phpMyAdmin 3.0.x, only MySQL 5.0.1 and newer are supported. For 
-    older MySQL versions, you need to use 2.8.x branch. phpMyAdmin can 
+    older MySQL versions, you need to use the latest 2.x branch. phpMyAdmin can 
     connect to your MySQL server using PHP's classic
     <a href="http://php.net/mysql">MySQL extension</a> as well as the
     <a href="http://php.net/mysqli">improved MySQL extension (MySQLi)</a> that
@@ -2777,12 +2774,7 @@ setfacl -d -m "g:www-data:rwx" tmp
     extension of your choice to a MySQL client library of at least the same
     minor version since the one that is bundled with some PHP distributions is
     rather old and might cause problems <a href="#faq1_17a">
-       (see <abbr title="Frequently Asked Questions">FAQ</abbr> 1.17a)</a>.
-    If your webserver is running on a windows system, you might want to try
-    MySQL's
-    <a href="http://dev.mysql.com/downloads/connector/php/">Connector/PHP</a>
-    instead of the MySQL / MySQLi extensions that are bundled with the official
-    php Win32 builds.</p>
+       (see <abbr title="Frequently Asked Questions">FAQ</abbr> 1.17a)</a>.</p>
 
 <h5 id="faq1_17a">
     <a href="#faq1_17a">1.17a I cannot connect to the MySQL server. It always returns the error
@@ -2805,7 +2797,7 @@ setfacl -d -m "g:www-data:rwx" tmp
 </p>
 
 <h4 id="faq1_18">
-    <a href="#faq1_18">1.18 (withdrawn).
+    <a href="#faq1_18">1.18 (withdrawn).</a></h4>
 
 <h4 id="faq1_19">
     <a href="#faq1_19">1.19 I can't run the "display relations" feature because the
@@ -3175,7 +3167,7 @@ the <tt>mysql_upgrade</tt> command on the server.</p>
 </ul>
 
 <p> Have also a look at the
-    <a href="http://www.mysql.com/doc/C/a/Can_not_connect_to_server.html">
+    <a href="http://dev.mysql.com/doc/en/can-not-connect-to-server.html">
          corresponding section of the MySQL documentation</a>.</p>
 
 <h4 id="faq2_4">
@@ -3409,8 +3401,8 @@ have either the <a href="http://pecl.php.net/package/APC">APC</a> extension
 
 <p> When MySQL is running in ANSI-compatibility mode, there are some major
     differences in how <abbr title="structured query language">SQL</abbr> is
-    structured (see <a href="http://dev.mysql.com/doc/mysql/en/ANSI_mode.html">
-    http://dev.mysql.com/doc/mysql/en/ANSI_mode.html</a>). Most important of all,
+    structured (see <a href="http://dev.mysql.com/doc/mysql/en/ansi-mode.html">
+    http://dev.mysql.com/doc/mysql/en/ansi-mode.html</a>). Most important of all,
     the quote-character (") is interpreted as an identifier quote character and
     not as a string quote character, which makes many internal phpMyAdmin
     operations into invalid <abbr title="structured query language">SQL</abbr>
@@ -3995,7 +3987,7 @@ INSERT INTO REL_towns VALUES ('M', 'Montréal');
     columns!</a></h4>
 
 <p> No, it's MySQL that is doing
-    <a href="http://www.mysql.com/doc/S/i/Silent_column_changes.html">silent
+    <a href="http://dev.mysql.com/doc/en/silent-column-changes.html">silent
     column type changing</a>.</p>
 
 <h4 id="underscore">
@@ -4912,7 +4904,7 @@ Jakub Wilk, Thomas Michael Winningham, Vilius Zigmantas, "Manuzhai".
     <li><a href="http://www.wikipedia.org/wiki/Server_%28computing%29">Server</a>
          - a computer system that provides services to other computing
          systems over a network.</li>
-    <li><a id="glossar_storage_engine" href="http://dev.mysql.com/doc/refman/5.0/en/storage-engines.html">Storage Engines</a>
+    <li><a id="glossar_storage_engine" href="http://dev.mysql.com/doc/en/storage-engines.html">Storage Engines</a>
         - handlers for different table types</li>
     <li><a href="http://www.wikipedia.org/wiki/Socket#Computer_sockets">socket</a>
          - a form of inter-process communication.</li>
diff --git a/README b/README
index d84e8d7..182b036 100644
--- a/README
+++ b/README
@@ -5,12 +5,12 @@ phpMyAdmin - Readme
 
   A set of PHP-scripts to manage MySQL over the web.
 
-  Version 3.3.8.1
-  ---------------
+  Version 3.3.9
+  -------------
   http://www.phpmyadmin.net/
 
     Copyright (C) 1998-2000 Tobias Ratschiller <tobias_at_ratschiller.com>
-    Copyright (C) 2001-2010 Marc Delisle <marc_at_infomarc.info>
+    Copyright (C) 2001-2011 Marc Delisle <marc_at_infomarc.info>
                             Olivier Müller <om_at_omnis.ch>
                             Robin Johnson <robbat2_at_users.sourceforge.net>
                             Alexander M. Turek <me_at_derrabus.de>
diff --git a/db_operations.php b/db_operations.php
index 29d2635..d3e62c2 100644
--- a/db_operations.php
+++ b/db_operations.php
@@ -125,14 +125,15 @@ if (strlen($db) && (! empty($db_rename) || ! empty($db_copy))) {
 
 
         foreach ($tables_full as $each_table => $tmp) {
-            // to be able to rename a db containing views, we
-            // first collect in $views all the views we find and we
-            // will handle them after the tables
-            /**
-             * @todo support a view of a view
-             */
+            // to be able to rename a db containing views,
+            // first all the views are collected and a stand-in is created
+            // the real views are created after the tables
             if (PMA_Table::isView($db, $each_table)) {
                 $views[] = $each_table;
+		// Create stand-in definition to resolve view dependencies
+		$sql_view_standin = PMA_getTableDefStandIn($db, $each_table, "\n");
+		PMA_DBI_query($sql_view_standin);
+		$GLOBALS['sql_query'] .= "\n" . $sql_view_standin . ';';
                 continue;
             }
 
@@ -190,13 +191,19 @@ if (strlen($db) && (! empty($db_rename) || ! empty($db_copy))) {
 
         // handle the views
         if (! $_error) {
-            foreach ($views as $view) {
-                if (! PMA_Table::moveCopy($db, $view, $newname, $view,
-                 'structure', $move, 'db_copy')) {
-                    $_error = true;
-                    break;
-                }
-            }
+		// temporarily force to add DROP IF EXIST to CREATE VIEW query,
+		// to remove stand-in VIEW that was created earlier
+		$temp_drop_if_exists = $GLOBALS['drop_if_exists'];
+		$GLOBALS['drop_if_exists'] = 'true';
+
+		foreach ($views as $view) {
+			if (! PMA_Table::moveCopy($db, $view, $newname, $view, 'structure', $move, 'db_copy')) {
+				$_error = true;
+				break;
+			}
+		}
+		// restore previous value
+		$GLOBALS['drop_if_exists'] = $temp_drop_if_exists;
         }
         unset($view, $views);
 
@@ -212,6 +219,28 @@ if (strlen($db) && (! empty($db_rename) || ! empty($db_copy))) {
             unset($GLOBALS['sql_constraints_query_full_db'], $one_query);
         }
 
+	if (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
+
+		// to avoid selecting alternatively the current and new db
+		// we would need to modify the CREATE definitions to qualify
+		// the db name
+		$event_names = PMA_DBI_fetch_result('SELECT EVENT_NAME FROM information_schema.EVENTS WHERE EVENT_SCHEMA= \'' . PMA_sqlAddslashes($db,true) . '\';');
+		if ($event_names) {
+			foreach($event_names as $event_name) {
+				PMA_DBI_select_db($db);
+				$tmp_query = PMA_DBI_get_definition($db, 'EVENT', $event_name);
+				// collect for later display
+				$GLOBALS['sql_query'] .= "\n" . $tmp_query;
+				PMA_DBI_select_db($newname);
+				PMA_DBI_query($tmp_query);
+			}
+		}
+	}
+	// go back to current db, just in case
+	PMA_DBI_select_db($db);
+
         // Duplicate the bookmarks for this db (done once for each db)
         if (! $_error && $db != $newname) {
             $get_fields = array('user', 'label', 'query');
diff --git a/lang/polish-utf-8.inc.php b/lang/polish-utf-8.inc.php
index 0ddfd1b..98e3137 100644
--- a/lang/polish-utf-8.inc.php
+++ b/lang/polish-utf-8.inc.php
@@ -38,7 +38,7 @@ $strAddIntoComments = 'Dodaj w komentarzach:';
 $strAddNewField = 'Dodaj nowego pole';
 $strAddPrivilegesOnDb = 'Dodaj uprawnienia dla następującej bazy danych';
 $strAddPrivilegesOnTbl = 'Dodaj uprawnienia dla następującej tabeli';
-$strAddSearchConditions = 'Dodaj warunki przeszukiwania (warunek dla "where"):';
+$strAddSearchConditions = 'Dodaj warunki przeszukiwania (warunek dla "WHERE"):';
 $strAddToIndex = 'Dodaj  %s kolumn do indeksu ';
 $strAddUser = 'Dodaj nowego użytkownika';
 $strAddUserMessage = 'Nowy użytkownik został dodany.';
@@ -156,15 +156,15 @@ $strConstraintsForDumped = 'Ograniczenia dla zrzutów tabel';
 $strConstraintsForTable = 'Ograniczenia dla tabeli';
 $strControluserFailed = 'Połączenie dla użytkownika kontrolnego zdefiniowanego w pliku konfiguracyjnym nie powiodło się.';
 $strCookiesRequired = 'Odtąd musi być włączona obsługa ciasteczek.';
-$strCopyDatabaseOK = 'Baza danych %s została skopiowana do %s';
+$strCopyDatabaseOK = 'Baza danych %s została przekopiowana do %s';
 $strCopy = 'Kopiuj';
-$strCopyTableOK = 'Tabela %s została skopiowana do %s.';
-$strCopyTableSameNames = 'Nie można skopiować tabeli do niej samej!';
-$strCopyTable = 'Skopiuj tabelę do (bazadanych<b>.</b>tabela):';
+$strCopyTableOK = 'Tabela %s została przekopiowana do %s.';
+$strCopyTableSameNames = 'Nie można przekopiować tabeli do niej samej!';
+$strCopyTable = 'Kopiuj tabelę do (bazadanych<b>.</b>tabela):';
 $strCouldNotConnectSource = 'Nie można nawiązać połączenia z serwerem źródłowym';
 $strCouldNotConnectTarget = 'Nie można nawiązać połączenia z serwerem docelowym';
 $strCouldNotKill = 'phpMyAdminowi nie udało się unicestwić wątku %s. Prawdopodobnie został on już zamknięty.';
-$strCreateDatabaseBeforeCopying = 'CREATE DATABASE przed skopiowaniem';
+$strCreateDatabaseBeforeCopying = 'CREATE DATABASE przed przekopiowaniem';
 $strCreateIndexTopic = 'Utwórz nowy indeksu';
 $strCreateIndex = 'Utwórz indeks dla %s kolumn';
 $strCreateNewDatabase = 'Utwórz nową bazę danych';
@@ -193,7 +193,7 @@ $strChangeCopyModeDeleteAndReload = ' … usuń starego z tabel użytkowników,
 $strChangeCopyModeJustDelete = ' … usuń starego z tabel użytkowników.';
 $strChangeCopyModeRevoke = ' … odbierz wszystkie aktywne uprawnienia staremu, a następnie go usuń.';
 $strChangeCopyMode = 'Utwórz nowego użytkownika z takimi samymi uprawnieniami i …';
-$strChangeCopyUser = 'Zmień dane użytkownika / Skopiuj użytkownika';
+$strChangeCopyUser = 'Zmień dane użytkownika / Kopiuj użytkownika';
 $strChangeDisplay = 'Wybierz wyświetlane pole';
 $strChangePassword = 'Zmień hasło';
 $strChange = 'Zmień';
@@ -241,7 +241,7 @@ $strDefaultEngine = '%s to domyślny mechanizm składowania tego serwera MySQL.'
 $strDefaultValueHelp = 'Dla wartości domyślnych, proszę wprowadzić po prostu pojedynczą wartość, bez cytowania odwrotnym ukośnikiem czy ujmowania w cudzysłowy, używając takiego formatu: a';
 $strDefragment = 'Defragmentuj tabelę';
 $strDelayedInserts = 'Użyj opóźnionych dodań';
-$strDeleteAndFlushDescr = 'Jest to najzgrabniejszy sposób, ale przeładowanie uprawnień może potrwać jakiś czas.';
+$strDeleteAndFlushDescr = 'Jest to sposób na utrzymanie porządku. Przeładowanie uprawnień może potrwać jakiś czas.';
 $strDeleteAndFlush = 'Usuń użytkowników, a następnie przeładuj uprawnienia.';
 $strDeleted = 'Rekord został skasowany';
 $strDeleteNoUsersSelected = 'Żaden użytkownik ze został zaznaczony do usunięcia!';
@@ -254,7 +254,7 @@ $strDelOld = 'Aktualna strona ma powiązania z tabelą, która już nie istnieje
 $strDescending = 'Malejąco';
 $strDescription = 'Opis';
 $strDesignerHelpDisplayField = 'Wyświetlane pole jest koloru różowego. Aby włączyć/wyłączyć wyświetlanie pola, kilknij ikonę "Wybierz pole do wyświetlenia", a następnie kliknij odpowiednią nazwę pola.';
-$strDesigner = 'Projektant';
+$strDesigner = 'Widok projektu';
 $strDetails = 'Szczegóły…';
 $strDictionary = 'słownik';
 $strDifference = 'Różnica';
@@ -302,7 +302,7 @@ $strErrorInZipFile = 'Błąd w archiwum ZIP:';
 $strErrorRelationAdded = 'Błąd: relacja nie została dodana.';
 $strErrorRelationExists = 'Błąd: relacja już istnieje.';
 $strErrorRenamingTable = 'Błąd podczas zmiany nazwy tabeli z %1$s na %2$s';
-$strErrorSaveTable = 'Błąd podczas zapisywania współrzędnych dla Projektanta.';
+$strErrorSaveTable = 'Błąd podczas zapisywania współrzędnych w widoku projektu.';
 $strEscapeWildcards = 'Aby użyć symboli wieloznacznych _ i % w znaczeniu dosłownym, należy je poprzedzić znakiem \ ';
 $strEsperanto = 'Esperanto';
 $strEstonian = 'Estoński';
@@ -457,7 +457,7 @@ $strInvalidTableName = 'Niewłaściwa nazwa tabeli';
 
 $strJapanese = 'Japoński';
 $strJoins = 'Złączenia';
-$strJumpToDB = 'Skok do bazy danych "%s".';
+$strJumpToDB = 'Przejście do bazy danych "%s".';
 $strJustDeleteDescr = 'Do momentu przeładowania uprawnień "usunięci" użytkownicy nadal będą mieli dostęp do serwera.';
 $strJustDelete = 'Po prostu usuń użytkowników z tabeli uprawnień.';
 
@@ -536,7 +536,7 @@ $strMyISAMRecoverOptionsDesc = 'Tryb w którym po awarii tabele MyISAM są autom
 $strMyISAMRecoverOptions = 'Tryb automatycznej naprawy';
 $strMyISAMRepairThreadsDesc = 'Wartość większa niż 1 oznacza, że indeksy tabel MyISAM są tworzone współbieżnie (każdy indeks ma swój wątek) podczas naprawy przez proces sortujący.';
 $strMyISAMRepairThreads = 'Liczba wątków naprawiających';
-$strMyISAMSortBufferSizeDesc = 'Bufor, który jest alokowany w czasie sortowania indeksów MyISAM podczas operacji REPAIR TABLE albo gdy indeksy są tworzone przez polecenia CREATE INDEX lub ALTER TABLE.';
+$strMyISAMSortBufferSizeDesc = 'Bufor, który jest przydzielany w czasie sortowania indeksów MyISAM podczas operacji REPAIR TABLE, albo gdy indeksy są tworzone przez polecenia CREATE INDEX lub ALTER TABLE.';
 $strMyISAMSortBufferSize = 'Rozmiar bufora dla sortowania';
 $strMysqlClientVersion = 'Wersja klienta MySQL';
 $strMySQLConnectionCollation = 'System porównań dla połączenia MySQL';
@@ -562,7 +562,7 @@ $strNoIndex = 'Brak zdefiniowanego indeksu!';
 $strNoIndexPartsDefined = 'Brak zdefiniowanych części indeksu!';
 $strNoModification = 'Bez zmian';
 $strNone = 'Brak';
-$strNoneDefault = 'Żaden';
+$strNoneDefault = 'Brak';
 $strNo = 'Nie';
 $strNoOptions = 'Ten format nie ma żadnych opcji';
 $strNoPassword = 'Brak hasła';
@@ -623,21 +623,21 @@ $strPBXTGarbageThresholdDesc = 'Procent śmieci w dzienniku danych, nim zostanie
 $strPBXTGarbageThreshold = 'Próg śmieci';
 $strPBXTCheckpointFrequency = 'Częstotliwość punktów kontrolnych';
 $strPBXTCheckpointFrequencyDesc = 'Ilość danych zapisanych do dziennika transakcji przed wykonaniem punktu kontrolnego. Domyślną wartością jest 24MB.';
-$strPBXTIndexCacheSizeDesc = 'Ilość pamięci zaalokowanej jako pamięć podręczna indeksów. Domyślną wartością jest 32MB. Pamięc jest używana tylko do buforowane stron indeksów.';
+$strPBXTIndexCacheSizeDesc = 'Ilość pamięci przydzielanej jako pamięć podręczna indeksów. Domyślną wartością jest 32MB. Pamięc jest używana tylko do buforowania stron indeksów.';
 $strPBXTIndexCacheSize = 'Rozmiar pamięci podręcznej indeksów';
-$strPBXTLogBufferSizeDesc = 'Rozmiar bufora używanego podczas zapisu dziennika danych. Domyślną wartością jest 256MB. Silnik alokuje jeden bufor na wątek, ale tylko gdy wątek musi zapisać dane do dziennika.';
+$strPBXTLogBufferSizeDesc = 'Rozmiar bufora używanego podczas zapisu dziennika danych. Domyślną wartością jest 256MB. Mechanizm przydziela jeden bufor na wątek, ale tylko gdy wątek musi zapisać dane do dziennika.';
 $strPBXTLogBufferSize = 'Rozmiar bufora dziennika';
-$strPBXTLogCacheSizeDesc = 'Ilość pamięci zaalokowanej jako pamięć podręczna dziennika transakcji. Domyślną wartością jest 16MB.';
+$strPBXTLogCacheSizeDesc = 'Ilość pamięci przydzielanej jako pamięć podręczna dziennika transakcji. Domyślną wartością jest 16MB.';
 $strPBXTLogCacheSize = 'Rozmiar pamięci podręcznej dziennika';
-$strPBXTLogFileCountDesc = 'Liczba plików dziennika transakcji (pbxt/system/xlog*.xt), które będzie utwrzymywał system. Jeżeli liczba dzienników przekroczy tę wartość, stare dzienniki zostaną usunięte, w przeciwnym przypadku zmieniana jest ich nazwa i dostają kolejny najwyższy numer.';
+$strPBXTLogFileCountDesc = 'Liczba plików dziennika transakcji (pbxt/system/xlog*.xt), które będzie utrzymywał system. Jeżeli liczba dzienników przekroczy tę wartość, stare dzienniki zostaną usunięte, w przeciwnym przypadku zmieniana jest ich nazwa i dostają kolejny najwyższy numer.';
 $strPBXTLogFileCount = 'Liczba plików dziennika';
-$strPBXTLogFileThresholdDesc = 'Rozmiar logu transakcji przed rollover, and a new log is created. Domyślną wartośćią jest 16MB.';
+$strPBXTLogFileThresholdDesc = 'Rozmiar loga transakcji przed wznowieniem i utworzeniem nowego loga. Domyślną wartością jest 16MB.';
 $strPBXTLogFileThreshold = 'Próg pliku dziennika';
 $strPBXTRecordCacheSizeDesc = 'Ilość pamięci przydzielonej jako pamięć podręczna rekordów, używana do buforowania danych tabel. Domyślą wartością jest 32MB. Ta pamięć jest używana do zmian w plikach obsługi danych (.xtd) i wskaźnikach rekordów (.xtr).';
 $strPBXTRecordCacheSize = 'Rozmiar pamięci podręcznej rekordów';
 $strPBXTRowFileGrowSizeDesc = 'Wzrost rozmiaru plików zawierających wskaźniki rekordów (.xtr).';
 $strPBXTRowFileGrowSize = 'Wzrost rozmiaru pliku rekordu';
-$strPBXTTransactionBufferSizeDesc = 'Rozmiar globalnego bufora loga transakcji (alokowane są 2 bufory tej wielkości). Wartość domyślna to 1MB.';
+$strPBXTTransactionBufferSizeDesc = 'Rozmiar globalnego bufora loga transakcji (przydzielane są 2 bufory tej wielkości). Wartość domyślna to 1MB.';
 $strPBXTTransactionBufferSize = 'Rozmiar bufora transakcji';
 $strPdfDbSchema = 'Schemat bazy danych "%s" - strona %s';
 $strPdfInvalidTblName = 'Tabela "%s" nie istnieje!';
@@ -694,7 +694,7 @@ $strPrivDescMaxConnections = 'Ogranicz liczbę nowych połączeń, które może
 $strPrivDescMaxQuestions = 'Ogranicz liczbę zapytań, które może wysłać użytkownik w ciągu godziny.';
 $strPrivDescMaxUpdates = 'Ogranicz liczbę poleceń zmieniających jakąkolwiek tabelę lub bazę danych, które może wykonać użytkownik w ciągu godziny.';
 $strPrivDescMaxUserConnections = 'Ogranicz liczbę jednoczesnych połączeń, które może użytkownik.';
-$strPrivDescProcess = 'Pozwól oglądać procesy wszystkich użytkowyników';
+$strPrivDescProcess = 'Pozwól oglądać procesy wszystkich użytkowników';
 $strPrivDescReferences = 'Nie ma żadnych skutków w tej wersji MySQL.';
 $strPrivDescReload = 'Pozwól przeładowywać ustawienia serwera i opróżniać pamięć podręczną serwera.';
 $strPrivDescReplClient = 'Nadaj użytkownikowi prawo, by zapytać gdzie są serwery podrzędne / nadrzędne.';
@@ -924,7 +924,7 @@ $strSetuperror_empty_signon_url = 'Pomiń adres URL pojedynczego logowania Singo
 $strSetuperror_empty_user_for_config_auth = 'Pomiń nazwę użytkownika podczas używania metody uwierzytelnienia z pliku konfiguracyjnego';
 $strSetuperror_form = 'Wysłany formularz zawiera błędy';
 $strSetuperror_incorrect_ip_address = 'Nieprawidłowy adres IP: %s';
-$strSetuperror_incorrect_port = 'Nieprawdiłowy numer portu';
+$strSetuperror_incorrect_port = 'Nieprawidłowy numer portu';
 $strSetuperror_incorrect_value = 'Nieprawidłowa wartość';
 $strSetuperror_missing_field_data = 'Brakuje danych dla %s';
 $strSetuperror_nan_nneg = 'Liczba nie jest nieujemna';
@@ -982,12 +982,12 @@ $strSetupForm_Server_login_options = 'Opcje pojedynczego logowania (Signon)';
 $strSetupForm_Server_pmadb = 'Baza danych PMA';
 $strSetupForm_Server_pmadb_desc = 'Skonfiguruj bazę danych phpMyAdmin, aby uzyskać dostęp do dodatkowych funkcji, zobacz więcej w dokumentacji [a at ../Documentation.html#linked-tables]linked-tables infrastructure[/a]';
 $strSetupForm_Server = 'Ustawienia podstawowe';
-$strSetupFormset_customization = 'Indywidualizacja';
-$strSetupFormset_export = 'Indywidualizacja opcji eksportu';
+$strSetupFormset_customization = 'Dostosowanie';
+$strSetupFormset_export = 'Dostosowanie opcji eksportu';
 $strSetupFormset_features = 'Funkcje';
-$strSetupFormset_import = 'Indywidualizacja opcji importu';
-$strSetupFormset_left_frame = 'Indywidualizacja ramki nawigacyjnej';
-$strSetupFormset_main_frame = 'Indywidualizacja głównej ramkj';
+$strSetupFormset_import = 'Dostosowanie opcji importu';
+$strSetupFormset_left_frame = 'Dostosowanie ramki nawigacyjnej';
+$strSetupFormset_main_frame = 'Dostosowanie ramki głównej';
 $strSetupForm_Sql_box_desc = 'Dostosuj odnośniki pokazywane w ramkach zapytań SQL';
 $strSetupForm_Sql_box = 'Okno zapytania SQL';
 $strSetupForm_Sql_queries_desc = 'Ustawienia zapytań SQL. Zobacz ustawienia opcji pola zapytań SQL [a@?page=form&formset=main_frame#tab_Sql_box]Navigation frame[/a]';
@@ -1062,7 +1062,7 @@ $strSetupMaxRows_desc = 'Liczba rekordów wyświetlana podczas przeglądania wyn
 $strSetupMaxRows_name = 'Maksymalna liczba rekordów do wyświetlenia';
 $strSetupMaxTableList_desc = 'Maksymalna liczba tabel pokazywanych na liście tabel';
 $strSetupMaxTableList_name = 'Maksimum tabel';
-$strSetupMemoryLimit_desc = 'Ile pamięci może zaalokować skrypt, np. [kbd]32M[/kbd] ([kbd]0[/kbd] oznacza brak limitu)';
+$strSetupMemoryLimit_desc = 'Ilość pamięci, jaka może być przydzielona dla skryptu, np. [kbd]32M[/kbd] ([kbd]0[/kbd] oznacza brak limitu)';
 $strSetupMemoryLimit_name = 'Limit pamięci';
 $strSetupNavigationBarIconic_desc = 'Używaj tylko ikon, tylko tekstu lub ikon i tekstu';
 $strSetupNavigationBarIconic_name = 'Wygląd interfejsu paska nawigacji';
@@ -1142,7 +1142,7 @@ $strSetupServers_password_desc = 'Należy pozostawić puste w przypadku innego n
 $strSetupServers_password_name = 'Hasło dla uwierzytelniania typu config';
 $strSetupServers_pdf_pages_desc = 'Pozostaw puste, aby nie obsługiwać schematu PDF. Sugerowana nazwa: [kbd]pma_pdf_pages[/kbd]';
 $strSetupServers_pdf_pages_name = 'Schemat PDF: strony tabeli';
-$strSetupServers_pmadb_desc = 'Baza danych używana przez funkcje relacji, zakładek i generowania PDF-ów. Pełna informacja znajduje się na stronie [a at http://wiki.phpmyadmin.net/pma/pmadb]pmadb[/a]. Puste pole oznacza brak obsługi. Domyślna wartość: [kbd]phpmyadmin[/kbd]';
+$strSetupServers_pmadb_desc = 'Baza danych używana przez funkcje relacji, zakładek, i do generowania plików PDF. Pełna informacja znajduje się na stronie [a at http://wiki.phpmyadmin.net/pma/pmadb]pmadb[/a]. Puste pole oznacza brak obsługi. Domyślna wartość: [kbd]phpmyadmin[/kbd]';
 $strSetupServers_pmadb_name = 'Baza danych PMA';
 $strSetupServers_port_desc = 'Port na którym nasłuchuje serwer MySQL, pole puste oznacza wartość domyślną';
 $strSetupServers_port_name = 'Port serwera';
@@ -1251,7 +1251,7 @@ $strShowStatusDelayed_errorsDescr = 'Liczba rekordów zapisanych przy pomocy INS
 $strShowStatusDelayed_insert_threadsDescr = 'Liczba użytych wątków obsługujących INSERT DELAYED. Każda osobna tabela, na której wykonuje się INSERT DELAYED dostaje własny wątek.';
 $strShowStatusDelayed_writesDescr = 'Liczba rekordów zapisanych poprzez INSERT DELAYED.';
 $strShowStatusFlush_commandsDescr  = 'Liczba wykonanych instrukcji FLUSH.';
-$strShowStatusHandler_commitDescr = 'Liczba wewnętrznych intrukcji COMMIT.';
+$strShowStatusHandler_commitDescr = 'Liczba wewnętrznych instrukcji COMMIT.';
 $strShowStatusHandler_deleteDescr = 'Ile razy rekord został usunięty z tabeli.';
 $strShowStatusHandler_discoverDescr = 'Serwer MySQL może zapytać mechanizm składowania Cluster NDB, czy ma informacje o tabeli o zadanej nazwie. Nazywamy to odkryciem (<i>discovery</i>). Handler_discover wskazuje, ile razy tabela została odkryta.';
 $strShowStatusHandler_read_firstDescr = 'Ile razy z indeksu została odczytana pierwsza pozycja. Duża wartość sugeruje, że serwer wykonuje pełnych przeszukań indeksów; na przykład SELECT col1 FROM foo, przy założeniu, że col1 jest zindeksowane.';
@@ -1268,7 +1268,7 @@ $strShowStatusInnodb_buffer_pool_pages_dirtyDescr = 'Liczba aktualnie brudnych s
 $strShowStatusInnodb_buffer_pool_pages_flushedDescr = 'Liczba stron w puli bufora, których wymiecienia zażądano.';
 $strShowStatusInnodb_buffer_pool_pages_freeDescr = 'Liczba wolnych stron.';
 $strShowStatusInnodb_buffer_pool_pages_latchedDescr = 'Liczba stron zatrzaśniętych w puli bufora InnoDB. Są to strony aktualnie odczytywane lub zapisywane lub takie, które nie mogą zostać wymiecione lub usunięte z jakiegoś innego powodu.';
-$strShowStatusInnodb_buffer_pool_pages_miscDescr = 'Liczba strony stron zajętych z powodu ich alokacji dla celów administracyjnych takich jak blokady rekordu lub adaptacyjny indeks haszujący. Wartość ta może też zostać policzona jako Innodb_buffer_pool_pages_total - Innodb_buffer_pool_pages_free - Innodb_buffer_pool_pages_data.';
+$strShowStatusInnodb_buffer_pool_pages_miscDescr = 'Liczba strony stron zajętych z powodu ich przydzielenia dla celów administracyjnych, takich jak blokady rekordu lub adaptacyjny indeks haszujący. Wartość ta może też zostać policzona jako Innodb_buffer_pool_pages_total - Innodb_buffer_pool_pages_free - Innodb_buffer_pool_pages_data.';
 $strShowStatusInnodb_buffer_pool_pages_totalDescr = 'Łączny rozmiar puli bufora, w stronach.';
 $strShowStatusInnodb_buffer_pool_read_ahead_rndDescr = 'Liczba "losowych" odczytów z wyprzedzeniem zainicjowanych przez InnoDB. Występuje gdy zapytane przeszukiwałoby duże fragmenty tabeli, ale w dowolnej kolejności.';
 $strShowStatusInnodb_buffer_pool_read_ahead_seqDescr = 'Liczba sekwencyjnych odczytów z wyprzedzeniem zainicjowanych przez InnoDB. Występuje gdy InnoDB wykonuje sekwencyjne pełne przeszukiwanie tabeli.';
@@ -1410,8 +1410,8 @@ $strSwekeyAuthenticating = 'Trwa uwierzytelnianie…';
 $strSwekeyAuthFailed = 'Uwierzytelnianie sprzętowe nie powiodło się';
 $strSwekeyNoKeyId = 'Plik %s nie zawiera żadnego identyfikatora klucza';
 $strSwekeyNoKey = 'Prawidłowy klucz uwierzytelniający nie jest podłączony';
-$strSwitchToDatabase = 'Przełącz do skopiowanej bazy danych';
-$strSwitchToTable = 'Przełącz na skopiowaną tabelę';
+$strSwitchToDatabase = 'Przełącz do przekopiowanej bazy danych';
+$strSwitchToTable = 'Przełącz na przekopiowaną tabelę';
 $strSynchronizationNote = 'Docelowa baza danych zostanie w całości zsynchronizowana ze źródłową. Źródłowa baza danych pozostanie niezmieniona.';
 $strSynchronizeDb =  'Synchronizuj bazy danych';
 $strSynchronize = 'Synchronizacja';
@@ -1494,7 +1494,7 @@ $strTrackingSQLDump = 'Zrzut SQL';
 $strTrackingSQLExecuted = 'Instrukcje SQL zostały wykonane.';
 $strTrackingSQLExecutionAlert = 'Ta opcja zamienia twoją tabelę i zawarte w niej dane.';
 $strTrackingSQLExecution = 'Wykonanie SQL';
-$strTrackingSQLExported = 'Instrukcje SQL zostały wyeksportowane. Proszę skopiować zrzut lub go wykonać.';
+$strTrackingSQLExported = 'Instrukcje SQL zostały wyeksportowane. Proszę przekopiować zrzut lub go wykonać.';
 $strTrackingStatements = 'Monitorowanie instrukcji';
 $strTrackingStatusActive = 'aktywne';
 $strTrackingStatusNotActive = 'nie aktywne';
@@ -1537,11 +1537,11 @@ $strTurkish = 'Turecki';
 $strType = 'Typ';
 
 $strUkrainian = 'Ukraiński';
-$strUncheckAll = 'Usuń zaznaczenie wszystkich';
+$strUncheckAll = 'Usuń zaznaczenie';
 $strUnicode = 'Unicode';
 $strUnique = 'Jednoznaczny';
 $strUnknown = 'nieznany';
-$strUnselectAll = 'Usuń zaznaczenie wszystkich';
+$strUnselectAll = 'Usuń zaznaczenie';
 $strUnsupportedCompressionDetected = 'Próbowano wczytać plik z nieobsługiwanym typem kompresji (%s). Albo jego obsługa nie została zaimplementowana albo została konfiguracyjnie wyłączona.';
 $strUpdatePrivMessage = 'Uaktualniłeś uprawnienia dla %s.';
 $strUpdateProfileMessage = 'Profil został uaktualniony.';
@@ -1581,7 +1581,7 @@ $strVersionInformation = 'Informacja o wersji';
 $strViewDumpDatabases = 'Zrzut baz danych';
 $strViewDumpDB = 'Zrzut bazy danych';
 $strViewDump = 'Zrzut tabeli';
-$strViewHasAtLeast = 'Ten widok ma przynajmniej tyle wierszy. Więcej informacji w %sdocumentation%s.';
+$strViewHasAtLeast = 'Ten widok ma przynajmniej tyle wierszy. Więcej informacji znajduje się w %sdokumentacji%s.';
 $strViewHasBeenDropped = 'Widok %s został usunięty';
 $strViewImage = 'Zobacz obraz';
 $strViewName = 'Nazwa widoku';
@@ -1589,7 +1589,7 @@ $strView = 'Widok';
 $strViewVideo = 'Obejrzyj film';
 
 $strWebServer = 'Serwer WWW';
-$strWebServerUploadDirectoryError = 'Nie mozna znaleźć katalogu do zapisu przesyłanych plików';
+$strWebServerUploadDirectoryError = 'Nie można znaleźć katalogu do zapisu przesyłanych plików';
 $strWebServerUploadDirectory = 'katalog serwera WWW do przesyłania plików';
 $strWelcome = 'Witamy w %s';
 $strWestEuropean = 'Zachodnioeuropejski';
diff --git a/lang/slovenian-utf-8.inc.php b/lang/slovenian-utf-8.inc.php
index 793334e..08fcfce 100644
--- a/lang/slovenian-utf-8.inc.php
+++ b/lang/slovenian-utf-8.inc.php
@@ -8,7 +8,7 @@ $text_dir = 'ltr'; // ('ltr' for left to right, 'rtl' for right to left)
 $number_thousands_separator = '.';
 $number_decimal_separator = ',';
 // shortcuts for Byte, Kilo, Mega, Giga, Tera, Peta, Exa
-$byteUnits = array('Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB');
+$byteUnits = array('B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB');
 
 $day_of_week = array('Ned', 'Pon', 'Tor', 'Sre', 'Čet', 'Pet', 'Sob');
 $month = array('Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Avg', 'Sep', 'Okt', 'Nov', 'Dec');
@@ -157,7 +157,7 @@ $strCreateDatabaseBeforeCopying = 'CREATE DATABASE pred kopiranjem';
 $strCreateIndexTopic = 'Ustvari nov indeks';
 $strCreateIndex = 'Ustvari indeks na %s stolpcih';
 $strCreateNewDatabase = 'Ustvari novo zbirko podatkov';
-$strCreateNewTable = 'Ustvari novo tabelo v podatkovni bazi %s';
+$strCreateNewTable = 'Ustvari novo tabelo v zbirki podatkov %s';
 $strCreatePage = 'Ustvari novo stran';
 $strCreatePdfFeat = 'Ustvarjanje datotek PDF';
 $strCreateRelation = 'Ustvari razmerje';
@@ -204,7 +204,7 @@ $strDatabaseHasBeenDropped = 'Podatkovna zbirka %s je zavržena.';
 $strDatabaseNotExisting = 'Podatkovna zbirka \'%s\' ne obstaja.';
 $strDatabase = 'Podatkovna zbirka';
 $strDatabasesDropped = '%s zbirke podatkov so uspešno zavržene.';
-$strDatabases = 'podatkovne baze';
+$strDatabases = 'Zbirke podatkov';
 $strDatabase_src = 'Izvorna zbirka podatkov';
 $strDatabasesStatsDisable = 'Onemogoči statistiko';
 $strDatabasesStatsEnable = 'Omogoči statistiko';
@@ -618,7 +618,7 @@ $strPBXTRowFileGrowSizeDesc = 'Velikost rasti datotek kazalca vrstic (.xtr).';
 $strPBXTRowFileGrowSize = 'Velikost rasti datotek vrstic';
 $strPBXTTransactionBufferSizeDesc = 'Velikost globalnega medpomnilnika dnevnika transakcij (pogon dodeli dva medpomnilnika te velikosti). Privzeto je 1 MB.';
 $strPBXTTransactionBufferSize = 'Velikost medpomnilnika transakcij';
-$strPdfDbSchema = 'Shema podatkovne baze "%s" - Stran %s';
+$strPdfDbSchema = 'Shema zbirke podatkov "%s" - Stran %s';
 $strPdfInvalidTblName = 'Tabela "%s" ne obstaja!';
 $strPdfNoTables = 'Ni tabel';
 $strPDF = 'PDF';
diff --git a/libraries/Config.class.php b/libraries/Config.class.php
index 8f5c43d..7e6460d 100644
--- a/libraries/Config.class.php
+++ b/libraries/Config.class.php
@@ -92,7 +92,7 @@ class PMA_Config
      */
     function checkSystem()
     {
-        $this->set('PMA_VERSION', '3.3.8.1');
+        $this->set('PMA_VERSION', '3.3.9');
         /**
          * @deprecated
          */
diff --git a/libraries/db_table_exists.lib.php b/libraries/db_table_exists.lib.php
index d1ae16a..e81c4be 100644
--- a/libraries/db_table_exists.lib.php
+++ b/libraries/db_table_exists.lib.php
@@ -79,7 +79,7 @@ if (empty($is_table) && !defined('PMA_SUBMIT_MULT') && ! defined('TABLE_MAY_BE_A
             }
 
             if (! $is_table) {
-                require 'db_sql.php';
+                require './db_sql.php';
                 exit;
             }
         }
diff --git a/libraries/export/sql.php b/libraries/export/sql.php
index d026f2c..34ce6b0 100644
--- a/libraries/export/sql.php
+++ b/libraries/export/sql.php
@@ -440,7 +440,7 @@ function PMA_exportDBFooter($db)
  * Returns a stand-in CREATE definition to resolve view dependencies
  *
  * @param   string   the database name
- * @param   string   the vew name
+ * @param   string   the view name
  * @param   string   the end of line sequence
  *
  * @return  string   resulting definition
diff --git a/libraries/js_escape.lib.php b/libraries/js_escape.lib.php
index 754d95f..dfa7530 100644
--- a/libraries/js_escape.lib.php
+++ b/libraries/js_escape.lib.php
@@ -61,6 +61,7 @@ function PMA_escapeJsString($string)
                                 "\000" => '',
                                 '\\' => '\\\\',
                                 '\'' => '\\\'',
+                                '"' => '\"',
                                 "\n" => '\n',
                                 "\r" => '\r')));
 }
diff --git a/libraries/sqlparser.data.php b/libraries/sqlparser.data.php
index 5fb1451..b11f956 100644
--- a/libraries/sqlparser.data.php
+++ b/libraries/sqlparser.data.php
@@ -528,7 +528,6 @@ $PMA_SQPdata_reserved_word = array (
     'LAST_INSERT_ID',
     'LEADING',
     'LEFT',
-    'LEVEL',
     'LIKE',
     'LIMIT',
     'LINEAR',               // 5.1
@@ -697,7 +696,7 @@ $PMA_SQPdata_reserved_word = array (
  *
  * @global integer MySQL reserved words count
  */
-$PMA_SQPdata_reserved_word_cnt = 288;
+$PMA_SQPdata_reserved_word_cnt = 287;
 /**
  * The previous array must be sorted so that the binary search work.
  * Sometimes a word is not added in the correct order, so
@@ -933,7 +932,6 @@ $PMA_SQPdata_forbidden_word = array (
     'LEAVE',
     'LEAVES',
     'LEFT',
-    'LEVEL',
     'LIKE',
     'LIMIT',
     'LINEAR',               // 5.1
@@ -1212,7 +1210,7 @@ $PMA_SQPdata_forbidden_word = array (
  *
  * @global integer MySQL forbidden words count
  */
-$PMA_SQPdata_forbidden_word_cnt = 483;
+$PMA_SQPdata_forbidden_word_cnt = 482;
 
 /**
  * the MySQL column/data types
diff --git a/libraries/sqlparser.lib.php b/libraries/sqlparser.lib.php
index 738d2fb..3db5308 100644
--- a/libraries/sqlparser.lib.php
+++ b/libraries/sqlparser.lib.php
@@ -2165,7 +2165,6 @@ if (! defined('PMA_MINIMUM_COMMON')) {
 // DEBUG echo "Loop format <strong>" . $arr[$i]['data'] . "</strong> " . $arr[$i]['type'] . "<br />";
             $before = '';
             $after  = '';
-            $indent = 0;
             // array_shift($typearr);
             /*
             0 prev2
@@ -2265,17 +2264,20 @@ if (! defined('PMA_MINIMUM_COMMON')) {
                     }
                     break;
                 case 'punct_bracket_close_round':
-                    $bracketlevel--;
-                    if ($infunction == TRUE) {
-                        $functionlevel--;
-                        $after     .= ' ';
-                        $before    .= ' ';
-                    } else {
-                        $indent--;
-                        $before    .= ($mode != 'query_only' ? '</div>' : ' ');
-                    }
-                    $infunction    = ($functionlevel > 0) ? TRUE : FALSE;
-                    break;
+			// only close bracket level when it was opened before
+			if ($bracketlevel > 0) {
+				$bracketlevel--;
+				if ($infunction == TRUE) {
+					$functionlevel--;
+					$after     .= ' ';
+					$before    .= ' ';
+				} else {
+					$indent--;
+					$before    .= ($mode != 'query_only' ? '</div>' : ' ');
+				}
+				$infunction    = ($functionlevel > 0) ? TRUE : FALSE;
+			}
+			break;
                 case 'alpha_columnType':
                     if ($typearr[3] == 'alpha_columnAttrib') {
                         $after     .= ' ';
@@ -2466,6 +2468,11 @@ if (! defined('PMA_MINIMUM_COMMON')) {
             }
             $str .= $after;
         } // end for
+	// close unclosed indent levels
+	while ($indent > 0) {
+		$indent--;
+		$str .= ($mode != 'query_only' ? '</div>' : ' ');
+	}
         if ($mode=='color') {
             $str .= '</span>';
         }
diff --git a/pdf_pages.php b/pdf_pages.php
index 4ec0601..a196b9b 100644
--- a/pdf_pages.php
+++ b/pdf_pages.php
@@ -351,7 +351,7 @@ foreach ($array_sh_page AS $key => $temp_sh_page) {
     $drag_y = $temp_sh_page['y'];
 
     $draginit2      .= ' Drag.init(getElement("table_' . $i . '"), null, 0, parseInt(myid.style.width)-2, 0, parseInt(myid.style.height)-5);' . "\n";
-    $draginit       .= '    getElement("table_' . $i . '").onDrag = function (x, y) { document.edcoord.elements["c_table_' . $i . '[x]"].value = parseInt(x); document.edcoord.elements["c_table_' . $i . '[y]"].value = parseInt(y) }' . "\n";
+    $draginit2      .= '    getElement("table_' . $i . '").onDrag = function (x, y) { document.edcoord.elements["c_table_' . $i . '[x]"].value = parseInt(x); document.edcoord.elements["c_table_' . $i . '[y]"].value = parseInt(y) }' . "\n";
     $draginit       .= '    getElement("table_' . $i . '").style.left = "' . $drag_x . 'px";' . "\n";
     $draginit       .= '    getElement("table_' . $i . '").style.top  = "' . $drag_y . 'px";' . "\n";
     $reset_draginit .= '    getElement("table_' . $i . '").style.left = "2px";' . "\n";
diff --git a/server_replication.php b/server_replication.php
index 979b9f0..b0293cc 100644
--- a/server_replication.php
+++ b/server_replication.php
@@ -125,11 +125,11 @@ if (isset($GLOBALS['sr_take_action'])) {
                 }
                 $dblist[] = $tmp_row[0];
 
-                PMA_DBI_query('CREATE DATABASE IF NOT EXISTS '.$tmp_row[0], $trg_link);
+                PMA_DBI_query('CREATE DATABASE IF NOT EXISTS '.PMA_backquote($tmp_row[0]), $trg_link);
             } else {
                 if (array_search($tmp_row[0], $do_db) !== false) {
                     $dblist[] = $tmp_row[0];
-                    PMA_DBI_query('CREATE DATABASE IF NOT EXISTS '.$tmp_row[0], $trg_link);
+                    PMA_DBI_query('CREATE DATABASE IF NOT EXISTS '.PMA_backquote($tmp_row[0]), $trg_link);
                 }
             }	  
         } // end while
diff --git a/tbl_change.php b/tbl_change.php
index f419bb1..cd4fff0 100644
--- a/tbl_change.php
+++ b/tbl_change.php
@@ -532,6 +532,7 @@ foreach ($rows as $row_id => $vrow) {
 
                 if ($field['True_Type'] == 'timestamp'
                   && empty($field['Default'])
+                  && empty($data)
                   && ! isset($analyzed_sql[0]['create_table_fields'][$field['Field']]['on_update_current_timestamp'])) {
                     $default_function = $cfg['DefaultFunctions']['first_timestamp'];
                 }
diff --git a/themes/.gitignore b/themes/.gitignore
index 2676970..410d2dc 100644
--- a/themes/.gitignore
+++ b/themes/.gitignore
@@ -15,6 +15,7 @@ openphpnuke
 original_small
 paradice
 pixeline
+pmahomme
 silk
 silkline
 smooth_yellow
diff --git a/translators.html b/translators.html
index f390397..6d2f096 100644
--- a/translators.html
+++ b/translators.html
@@ -11,7 +11,7 @@
     <link rel="icon" href="./favicon.ico" type="image/x-icon" />
     <link rel="shortcut icon" href="./favicon.ico" type="image/x-icon" />
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>phpMyAdmin 3.3.8.1 - Official translators</title>
+    <title>phpMyAdmin 3.3.9 - Official translators</title>
     <link rel="stylesheet" type="text/css" href="docs.css" />
 </head>
 
@@ -19,7 +19,7 @@
 <div id="header">
     <h1>
         <a href="http://www.phpmyadmin.net/">php<span class="myadmin">MyAdmin</span></a>
-        3.3.8.1 
+        3.3.9 
         official translators list
     </h1>
 </div>


hooks/post-receive
-- 
phpMyAdmin




More information about the Git mailing list