Byl vydán Mozilla Firefox 154.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 154 bude brzy k dispozici také na Flathubu a Snapcraftu.
Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 168 (pdf).
Open-source citační manažer Zotero (Wikipedie, GitHub) byl vydán v nové major verzi 10. Přehled novinek v příspěvku na blogu.
Interaktivní editor binárních dat GNU poke byl vydán ve verzi 5.0 (seznam změn).
Byla vydána verze 0.85 telnet a ssh klienta PuTTY (Wikipedie). Řešeno je 5 zranitelností.
Byly publikovány novinky z vývoje GIMPu. Pracuje se na novém formátu souborů. Stávající binární XCF bude nahrazen "zazipovaným XML". XCF zůstane plně podporován pouze pro načítání starých souborů.
Workshop o umělé inteligenci v Dartmouthu proběhl před 70 lety, od 18. června do 17. srpna 1956. Dvouměsíční soustředění 6–11 informatiků, iniciované Johnem McCarthym, položilo základy oboru umělé inteligence.
Po 9 týdnech vývoje od vydání Linuxu 7.1 oznámil Linus Torvalds vydání Linuxu 7.2. Podrobný přehled novinek a vylepšení na Linux Kernel Newbies nebo LWN.net: první a druhá polovina začleňovacího okna.
Debian dnes slaví 33 let. Ian Murdock oznámil vydání "Debian Linux Release" 16. srpna 1993.
Probíhá hlasování o používání LLM při vývoji Debianu. Vývojáři Debianu mají na výběr 9 možností (návrhy A až H a žádný z nich).
mysql> SELECT @@SESSION.sql_mode;
+----------------------------------------------------------------+
| @@SESSION.sql_mode |
+----------------------------------------------------------------+
| STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+----------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> CREATE TABLE tfull (
-> id INT NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY (id)
-> ) ENGINE=InnoDB AUTO_INCREMENT = 2147483647;
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO tfull VALUES();
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO tfull VALUES();
ERROR 1062 (23000): Duplicate entry '2147483647' for key 'PRIMARY'
mysql> DROP TABLE tfull;
Query OK, 0 rows affected (0.01 sec)
mysql>
Ale řekl bych, že chyba může být i jiného typu...
MariaDB [test]> CREATE TABLE tfull (
-> id INT NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY (id)
-> ) ENGINE=InnoDB AUTO_INCREMENT = 2147483647;
Query OK, 0 rows affected (0.06 sec)
MariaDB [test]> INSERT INTO tfull VALUES();
Query OK, 1 row affected (0.06 sec)
MariaDB [test]> INSERT INTO tfull VALUES();
ERROR 167 (22003): Out of range value for column 'id' at row 1
MariaDB [test]> alter table tfull modify id BIGINT;
Query OK, 1 row affected (0.06 sec)
Records: 1 Duplicates: 0 Warnings: 0
MariaDB [test]> INSERT INTO tfull VALUES();
Query OK, 1 row affected (0.05 sec)
MariaDB [test]> DROP TABLE tfull;
Query OK, 0 rows affected (0.06 sec)
Měl jsi si skusit ten insert provést 2×, pak by jsi si zjistil, že jsi problém nevyřešil, jen jsi vytvořil jiný (na to přijdeš hned, takže ho neodhalím
).
A když už jsme u MySQL(MariaDB) a zvolili jsme na začátku INT a ne BIGINT, tak možná je lepší postup viz níže, protože (teoreticky) 2× natáhneme čas dokud nám stačí 32 bit id a tabulka je výrazně menší rychlejší a nepotřebuje tolik paměti (pokud interval po naplnění byl měsíc, tak to nemá význam, ale pokud třeba tři roky, tak je to dost zásadní).
Já bych postupoval v tomto případě z mezikrokem takto:
mysql> CREATE TABLE tfull (
-> id INT NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY (id)
-> ) ENGINE=InnoDB AUTO_INCREMENT = 2147483647;
Query OK, 0 rows affected (0.02 sec)
mysql> INSERT INTO tfull VALUES();
Query OK, 1 row affected (0.02 sec)
mysql> INSERT INTO tfull VALUES();
ERROR 1062 (23000): Duplicate entry '2147483647' for key 'PRIMARY'
mysql> ALTER TABLE tfull MODIFY id INT UNSIGNED auto_increment;
Query OK, 1 row affected (0.03 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> INSERT INTO tfull VALUES();
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO tfull VALUES();
Query OK, 1 row affected (0.02 sec)
mysql> ALTER TABLE tfull AUTO_INCREMENT = 4294967295;
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> INSERT INTO tfull VALUES();
Query OK, 1 row affected (0.02 sec)
mysql> INSERT INTO tfull VALUES();
ERROR 1062 (23000): Duplicate entry '4294967295' for key 'PRIMARY'
mysql> ALTER TABLE tfull MODIFY id BIGINT auto_increment;
Query OK, 4 rows affected (0.02 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql> INSERT INTO tfull VALUES();
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO tfull VALUES();
Query OK, 1 row affected (0.02 sec)
mysql> SELECT id FROM tfull;
+------------+
| id |
+------------+
| 2147483647 |
| 2147483648 |
| 2147483649 |
| 4294967295 |
| 4294967296 |
| 4294967297 |
+------------+
6 rows in set (0.00 sec)
mysql> DROP TABLE tfull;
Query OK, 0 rows affected (0.01 sec)
mysql>
Při milionu insertů za sekundu bude třeba 300tisíc let prp dosažení 9223372036854775807 (BIGINT max.).
A případné zpracování takové hodnoty/typu (BIGINT UNSIGNED) způsobuje jen (drobné) problémy ve většině jazyků a i v samotném MySQL se už musí s tímto číslem pracovat s přetypováním (implicitní konverze čísel, zjednodušeně funguje jen do rozsahu BIGINT).
Tiskni
Sdílej: