Adminer 5.0.0

Adminer 5 odstraňuje podporu pro staré verze: MySQL 4, SQLite 2, extenze MSSQL (podporovaná je SQLSRV a nově i PDO_SQLSRV) a extenze mongo (podporovaná je MongoDB). Adminer také již nějakou dobu vyžaduje PHP alespoň 5.3, tato verze je i nadále podporovaná. Zachoval jsem podporu extenze mysql (spolu s mysqli a PDO_MySQL).

Další velké změny se udály na úrovni zdrojového kódu a doufám, že se navenek nijak neprojeví:

Další změna se týká výkonnosti. Při vypnyutí output_buffering běžel Adminer o něco pomaleji, proto ho nyní vždy zapíná (pokud už není zapnutý v konfiguraci PHP).

Dokončil jsem podporu generovaných sloupců. Podporují se při vytváření a změně tabulky, při vkládání, editaci a klonování řádků, při hromadné editaci a při exportu. K dispozici jsou v MySQL, PostgreSQL, SQLite a MS SQL.

K drobné změně došlo při vkládání řádek. Dříve se autofocusoval první sloupec, nyní se přeskočí, pokud je auto_increment.

V PostgreSQL jsem udělal tyto změny:

SQLite:

MS SQL:

V Elasticsearch lze textově vyhledávat v boolean hodnotách.

Verze 5.0.1 opravuje hromadné operace s tabulkami (chyběl jmenný prostor), odstraňuje duplicitní sloupce ze selectu (bug #670), v MariaDB opravuje odkaz na dokumentaci proměnných (bug #658) a v PostgreSQL přidává podporu indexů na materializovaných pohledech (PR #467).

Do pluginů se dá jmenný prostor Admineru doplnit tímto skriptem:

<?php
array_shift($argv);
foreach ($argv as $filename) {
    $file = file_get_contents($filename);
    $file = preg_replace('~(?<!\\\\)\b(idf_escape|table|connect|get_databases|limit|limit1|db_collation|engines|logged_user|tables_list|count_tables|table_status|is_view|fk_support|fields|indexes|foreign_keys|view|collations|information_schema|error|create_database|drop_databases|rename_database|auto_increment|alter_table|alter_indexes|truncate_tables|drop_views|drop_tables|move_tables|copy_tables|trigger|triggers|trigger_options|routine|routines|routine_languages|routine_id|last_id|explain|found_rows|types|type_values|schemas|get_schema|set_schema|create_sql|truncate_sql|use_sql|trigger_sql|show_variables|process_list|show_status|convert_field|unconvert_field|support|kill_process|connection_id|max_connections'
        . '|add_invalid_login|check_invalid_login|unset_permanent|auth_error'
        . '|page_header|page_headers|csp|get_nonce|page_messages|page_footer'
        . '|add_driver|get_driver'
        . '|select|referencable_primary|adminer_settings|adminer_setting|set_adminer_settings|textarea|select_input|json_row|edit_type|get_partitions_info|process_length|process_type|process_field|default_value|type_class|edit_fields|process_fields|normalize_enum|grant|drop_create|create_trigger|create_routine|remove_definer|format_foreign_key|tar_file|ini_bytes|doc_link|ob_gzencode|db_size|set_utf8mb4'
        . '|connection|adminer|version|idf_unescape|escape_string|number|number_type|remove_slashes|bracket_escape|min_version|charset|script|script_src|nonce|target_blank|h|nl_br|checkbox|optionlist|html_select|confirm|print_fieldset|bold|js_escape|ini_bool|sid|set_password|get_password|q|get_val|get_vals|get_key_vals|get_rows|unique_array|escape_key|where|where_check|where_link|convert_fields|cookie|restart_session|stop_session|get_session|set_session|auth_url|is_ajax|redirect|query_redirect|queries|apply_queries|queries_redirect|format_time|relative_uri|remove_from_uri|pagination|get_file|upload_error|repeat_pattern|is_utf8|shorten_utf8|format_number|friendly_url|hidden_fields|hidden_fields_get|table_status1|column_foreign_keys|enum_input|input|process_input|fields_from_edit|search_tables|dump_headers|dump_csv|apply_sql_function|get_temp_dir|file_open_lock|file_write_unlock|password_file|rand_string|select_value|is_mail|is_url|is_shortable|count_rows|slow_query|get_token|verify_token|lzw_decompress|on_help|edit_form'
        . '|get_lang|lang|switch_lang'
        . '|email_header|send_mail|like_bool)\(~', 'Adminer\\\\\0', $file);
    file_put_contents($filename, $file);
}
?>

Verze 5.0.2 opravuje zadávání hodnoty NULL do sloupce typu ENUM v PostgreSQL (bug #884), přidává podporu CockroachDB a v Elasticsearch zohledňuje práva where a order.

Jakub Vrána, Adminer, 7.3.2025, diskuse: 8 (nové: 0)

Diskuse

Tobias:

Hi Jakub,

thanks for coming back and your great work!

I saw that you are working together with Peter from AdminerNeo on some aspects of the two projects.
Can you maybe share what the future of Adminer (and AdminerNeo) holds? Are they going to be merged again or are they likely going to develop into different directions?
I'm asking because I'm not sure what to do and which of the projects to use now.

Thanks!
Tobias

ikona Jakub Vrána OpenID:

AdminerNeo was renamed to AdminNeo. I've invited Peter to join me to work on Adminer but he has different priorities:

- Drop support for PHP < 7.1.
- Drop all current designs.
- Add a configuration file.

His past commits often added something useful but also made irrelevant changes to the code style which made it inconsistent with the rest of the codebase. It was hard for me to read and understand these commits. So we've decided to keep the fork separate. We agreed to inform each other about security or other serious issues.

I'd suggest to stick with Adminer but the choice is yours.

Tobias:

Hi Jakub,

Thanks a lot for these details and explanation! That is very helpful!

Best wishes,
Tobias

hrach:

Nezvazujes migraci na github issues? :)

ikona Jakub Vrána OpenID:

Umožnil jsem vytvářet issues na GitHubu a znemožnil na SourceForge. Staré issues jsem nepřeváděl. Nejtěžší bylo nastavit číselnou řadu, aby čísla nekolidovala.

mbunal:

I've been using adminer since I heard about it, despite all the other alternatives.

I wish you would update notorm too!!!

Michal Vrabel:

Změnilo se něco s pluginy? Nějak přestal v 5.x fungovat třeba obyčejný login-servers... je k tomu nějaké info jak s pluginy pracovat?

ikona Jakub Vrána OpenID:

Pluginy musí volat funkce Admineru přes jmenný prostor Adminer\. To se dá buď trochu na prasáka udělat tak, že se taky vloží do tohoto jmenného prostoru, nebo je tam jmenný prostor potřeba doplnit skriptem v článku.

U pluginů distribuovaných s Adminerem jsem to udělal, login-servers mi funguje.

Vložit komentář

Používejte diakritiku. Vstup se chápe jako čistý text, ale URL budou převedeny na odkazy a PHP kód uzavřený do <?php ?> bude zvýrazněn. Pokud máte dotaz, který nesouvisí s článkem, zkuste raději diskusi o PHP, zde se odpovědi pravděpodobně nedočkáte.

Jméno: URL:

avatar © 2005-2025 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.