MySQL 8.0.4でMySQLの正規表現演算がだいぶマシになる
TL;DRMySQL 5.7とそれ以前にも一応 REGEXP演算子(またはRLIKE演算子)はあって、多少正規表現っぽいことはできるんだけど正規表現としては全然物足りなかった。少なくとも \sで空白文字にマッチできないとかちょっとPerlの正規表現で甘やかされた身にとってはつらいしかも遅いんだこれがあとマルチバイト非対応(マルチバイトに対して使おうと思ったことないけど)MySQL...
View ArticleMySQL 8.0.4の正規表現で更に遊ぶ(REGEXP_SUBSTR, REGEXP_INSTR)
See also, 日々の覚書: MySQL 8.0.4でMySQLの正規表現演算がだいぶマシになるMySQL 8.0.4で新たに追加された関数として、 REGEXP_SUBSTRと REGEXP_INSTRがある。REGEXP_REPLACEもあるけどこれはいいや(...
View ArticleLOAD DATA INFILEステートメントの中でカラムの順番とかをゴニョる
TL;DRLOAD DATA INFILEステートメントで、CSVなりTSVなりのフィールドの並び順とテーブルのカラムの並び順が一緒じゃない時にほげる方法とか読み取った値を加工してからテーブルに突っ込む方法とかTwitterからダウンロードできる...
View ArticleMySQL Router 2.1.5経由でのMySQLへの接続に失敗する
TL;DRMySQL Router 2.1.5からおもむろに connect_timeoutがミリ秒単位になった2.1.4とそれ以前では単位は 秒だった多分バグMySQL Bugs: #89740: “Timeout reached trying to connect to MySQL Server” occurs too...
View ArticleMySQL 8.0.4の SHOW GRANTS の結果が想像したのとちょっと違う
MySQL 8.0.4にroot@localhostでログインして SHOW GRANTSを実行したらこうなった。mysql> SHOW...
View Article#phperkaigi 2018 がとても楽しかった
PHPerKaigi 2018に参加してきました。まずは スポンサーのみなさん、いろいろ美味しゅうございましたありがとうございました。 スタッフのみなさん、いろいろフォローありがとうございました。特に @uessy_akrさんがセッションの前後色々話しかけたりフォローしたりしてくれて助かりました。ありがとうございました!!あとは初めて物理 @cakephperさんに会えました。実物は...
View Article#MANABIYA に行ってきました
3/23に開催された MANABIYAに行ってきました。1日目の3/23しか行けなかったけれどかなり豪華な コンテンツで、 澤田さんのPostgreSQLの今とこれから、 自分のセッション、間に職員室なるものをはさんで 澤田さん, 木下さん , そーだいさんと謎のCrossSession、 kazeburoさんの マイクロサービス on マルチクラウドと詰め込んだ1日でした。モリスさんの...
View Articlewslbridgeを使ってCygtermからWSLを扱うときに ALT + Dとかがアレになるやつの対策
`/etc/bash.bashrc` に↓を書き加えてもう二度とCygwin bashをまともに起動しないことにした。```exec /cygdrive/c/Users/yoku0825/wslbridge-0.2.4-cygwin64/wslbridge.exe -C ~```
View Article「危険な正規表現」 vs MySQL 8.0
他にもいくつかあると思うけれど、俺の一番のお気に入り(?)はこれ。危険な正規表現 | MOYO Laboratory(.*)*^試してみよう。mysql80 15> SELECT * FROM t1 LIMIT...
View ArticleMySQL 8.0は SELECT .. FOR UPDATE SKIP LOCKED とJSON_TABLES関数で「取り敢えずJSON」が捗る?
TL;DRauto_increment + JSON型(あるいはBLOB型やTEXT型でもいいけど)に生のJSONを突っ込む後から SELECT .. FOR UPDATE SKIP LOCKEDでワーカーが取り出して、 INSERT .. SELECT JSON_TABLE(..) FROM...
View ArticleMySQL 8.0の再帰CTE(WITH RECURSIVE)で1000行以上の結果セットを作りたいとき
TL;DRルーク! cte_max_recursion_depthを変えろ! デフォルトは1000だ!単なる連番のテストデータを作りたい時とか、再帰CTEは便利(というかMySQLerは今まで再帰CTEが使えなかったので、そもそもそれ以外の使い方は思いつかないわけだが)だけれど、 ↓ を訳した時点ではWHERE句を間違えるとさっくりとクエリーが逝きっぱなしになっていた。MySQL 8.0 Lab版:...
View ArticleMySQL 8.0.3とそれ以降では expire_logs_days は非推奨なパラメーターになりました
TL;DRバイナリーログの自動パージ期間を設定する expire_logs_daysはMySQL 8.0では非推奨代わりに binlog_expire_logs_secondsを設定するMySQL 8.0.1で導入された binlog_expire_logs_seconds当初は expire_logs_daysと 足し合わせるという互換性に考慮した...
View ArticleMySQL 8.0のSTATEMENT_DIGEST関数を使ってストアドプロシージャでSQLにホワイトリストを適用する
STATEMENT_DIGEST関数はSQLステートメントから定数をノーマライズしたもの(ダイジェスト)をハッシュ化して返してくれる関数。MySQL 5.6とそれ以降の...
View ArticleMySQL 8.0のnutshellを読んで秘伝のタレをどうこうしようと思っているメモ
たぶん本当にメモ。MySQL :: MySQL 8.0 Reference Manual :: 1.4 What Is New in MySQL 8.0caching_sha2_password, it is now the preferred authentication plugindefault_authentication_plugininnodb_undo_log_truncate is...
View Articleなるべく負荷をかけずにInnoDBバッファプールに載っているページの情報を見る
TL;DRinformation_schema.innodb_buffer_pageは重いib_buffer_poolにはテーブルスペースIDが記録されるので、それを使ってほげほげするこんな感じ?mysql> SET GLOBAL innodb_buffer_pool_dump_now = 1;mysql> SELECT space, name FROM...
View Articleyum版のMySQL 8.0をCentOSなコンテナーにインストールすると Operation not permitted って言われる…...
TL;DRdocker runする時に --cap-add=SYS_NICEを付け加えてやると上手くいく少なくとも Docker Hub公式のCentOSでMySQL公式のYumリポジトリーを設定しyum install mysql-community-serverでMySQL 8.0.11を入れるとmysqldが Operation not permittedで転ける$ docker run...
View Article"「7の倍数」を表す正規表現"をMySQl 8.0で試す
1年半くらい前に書かれたらしいけれど、ふと今日 「7の倍数」を表す正規表現 - Qiitaを見つけて読んだ。(取り敢えず今の俺の中で)正規表現といえばMySQL 8.0。日々の覚書: MySQL 8.0.4でMySQLの正規表現演算がだいぶマシになるそして(取り敢えず今の俺の中で)forループ的に数値をテストするといえばCTE、CTEといえばMySQL 8.0。MySQL 8.0 Lab版:...
View Articledefault_collation_for_utf8mb4 なんてパラメーターが追加になっていた
MySQL :: MySQL 8.0 Reference Manual :: 5.1.7 Server System Variables何このパラメーター、と思ったら、 utf8mb4のデフォルトコレーションが utf8mb4_general_ci (MySQL 5.7とそれ以前) から utf8mb4_0900_ai_ci (MySQL 8.0)に変わったことに対する経過措置っぽかった。これを...
View ArticleMySQL 8.0にはperformance_schema.events_statements_summary_by_digest...
MySQL 5.7からMySQL 8.0でのevents_statements_summary_by_digestのカラム変更。$ diff -y --suppress-common-lines <(mysql57 -sse "DESC p_s.events_statements_summary_by_digest")<(mysql80 -sse "DESC...
View ArticleMySQL ShellのUpgrade CheckerをPerl 5に書き下してみたけどそんなことする必要はなかったようだ
TL;DRlefredや MySQL Server Teamもすなる checkForServerUpgradeといふものを、yoku0825もしてみむとしてするなり。オリジナルはMySQL Shellのjsモードで使うものらしく、 X PluginをインストールしなければいけないX PluginなしのClassic Protocol +...
View Article