それが僕には楽しかったんです。

僕と MySQL と時々 MariaDB

MySQL

MySQL にいい感じにコントリビュートする方法(非公式)

この記事は MySQLのカレンダー | Advent Calendar 2023 - Qiita 6 日目の記事です。 はじめに 補足 コントリビュートしようぜ 登場人物 Oracle Profile の作成 OCA への署名 魂のコントリビュート 追記 2023/12/06 19:34 無事に取り込まれると… git log に名…

Handler と SELECT と時々 WHERE 句

はじめに 環境 前提 さぁデバッグタイムだ 確実に発生している事実 いざ server レイヤーダイブ まとめ おわりに はじめに どうも、最近どうにか出費を抑えようとしているけんつです。今回は自作ストレージエンジンをやっていて気になった SELECT と WHERE …

LOAD DATA LOCAL INFILE ~ REPLACE INTO と時々ロックでしっかり沼った

はじめに 書きながら思ったこと 検証環境 検証する 前提 コードパスを掴む ちょっと気合を入れて読んでいく おわりに はじめに どうも、最近よく主要人物が闇落ちする映像作品を薦められがちなけんつです。最近色々あって LOAD DATA LOCAL INFILE ~ REPLACE …

MySQL 探索記 ~ Unit Test がビルドされる時に必要なライブラリとリンク~

はじめに 前回との差分 余談 本題 一度冷静になる 頑張って実装を追う DEFAULT WITH_"${plugin}"_STORAGE_ENGINE MANDATORY おわりに はじめに どうも、ユニットテストをかけるようになったぜと前回の記事で喜んでいたらバイナリの書き込みで盛大に 1byte ず…

MySQL 探索記 ~自作プラグイン開発でユニットテストを気合いでサポートするための色々~

はじめに 後日談 前提 気合で gtest を使えるようにする テスト対象の実装を追加 EXAMPLE ストレージエンジンのビルド対象に追加する テストファイルを追加する ビルドする テストを実行する ここまでに何が行われたのか 既存実装の調査と紆余曲折 storage/p…

MySQL ハンドラーレイヤー探索記 ~無限 Empty Set 編~

はじめに ハンドラーの挙動 波乱の幕開け なんで Empty Set なのか 余談 おわりに はじめに どうも InnoDB に詳しくなろうと思って色々調べていたら何故か mysql-server レイヤーに詳しくなっていっているけんつです。 最近 InnoDB と最もシンプルな実装であ…

UDF と char * と時々 --binary-as-hex

はじめに mysql-ulid-plugin UDF をインストールする ハマりどころ 初期化関数の戻り値問題 char * で返した値が何故か hex で表示される おわりに 読むと幸せになれる はじめに 最近 UUID に頭を悩ませまくった結果、ULID なるいいものがあると知ったので気…

MySQL 8.0.31 以降でビルドが通らないケースを git bisect で調べる

はじめに 問題のビルド git bisect の準備 テストスクリプト ビルドが通らなくなったであろうコミット 対策(暫定) おわりに 追記 (2023/05/29 23:03) 何が起きたか 最終的な対策 反省文 はじめに mtr のオプションを拡張するパッチを出そうと最新の MySQL を…

MySQL Connector/C++ を使ってセッションを気合で作る

はじめに 環境 ここでやりたいこと Connector/C++ をインストールする 諸々のパスを確認する 簡単なサンプル 罠 CDK Error: unexpected message コンパイルできない deb でなく tar.gz から入れた場合に mysqlcppconn8 が見つからないと怒られる おまけ cmak…

MySQL 8.0.29 以下をビルドできない場合がある

はじめに ビルド 問題の躓きポイント どこからならビルドできるのか まとめ はじめに ちょいと調子が戻ってきたので MySQL で検証したいことを検証しようとビルドを元気に進めていたら、仕事用の macOS マシンでビルドできないならまだしも Ubuntu 系統の OS…

MySQL を使った最高に頭の悪いポートフォリオを作った話

はじめに 技術スタック 作ったもの 仕組み 技術的な話 docker コンテナに対して何かを実行させる Redis を使ったキャッシュ MySQL User の権限を絞る デプロイ時の色々 おわりに はじめに JVM オプションをいい感じに比較してくれるサービスを作ったが、サブ…

CLion を使って MySQL のビルド&デバッグを行う

はじめに MySQL のビルド&デバッグをする ソースコードを持ってきて展開する CLion で CMake を実行する CMake Options Generation path ビルド デバッグ デバッグ設定の変更 ブレークポイントを設定 実行する mysql クライアントから接続する おわりに 余…

OSS にちょっと技術的な貢献するまでの流れ

はじめに やったこと プルリクエストを投げるまでの流れ 問題が見つかる 信頼できる情報をまとめておく リポジトリを fork する README を確認する。 Contributing Pull Requests Testing 過去にマージされた修正から傾向を掴む 問題箇所を修正する ブランチ…

MySQL 8.0.15 の前後で変わった文字列と DATE 型の比較について

はじめに 前提条件 謎現象を再現する 8.0.15 以下 8.0.16 以上 原理 文献 おわりに はじめに そういえば、最近この手の記事を書いてないし何ならインプットもしてない事を思い出し、今日雑にテストしてたらたまたまハマった面白い挙動があったのでまとめる。…

MySQL の docker コンテナを起動した時の warning, error を調べつくす

はじめに 問題のログ [Warning] [MY-011070] [Server] Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release. [Warning] …

MySQL 8.0.20 で導入された binlog transaction compression をハイパー雑に検証する

はじめに 前提環境と検証方法 リリースノートの文献 やってみた perfomance_shema をみてみる 余談 さいごに 2020/04/29 4:42 2020/04/29 11:43 2020/04/29 12:08 はじめに どうも、共通新人研修がビジネス職よりで割とコードとか書いている暇がなかったけん…

MySQL 8.0.19 と docker-compose 環境下で Single-Primary InnoDB Cluster を構築する

はじめに 環境 参考資料 InnoDB Cluster の構築 InnoDB Cluster とは 要件 MySQL Shell の導入 各サーバインスタンスの設定を修正する binlog_checksum enforce_gtid_consistency gtid_mode InnoDB Cluster の構築 オプションの類 *** ネットワーク周り grou…

MySQL 8.0.18 の実装を読み解きながら簡単なストレージエンジンを自作する

はじめに MySQL をビルドする ストレージエンジンを自作する Example エンジンをベースにする handlerton の作成とインスタンス化 テーブルを作成する 余談・気になったところ テーブルを開く INSERT の実装 ha_tina の存在 テーブルスキャン store_lock の…

MySQL のレプリケーション実装

はじめに レプリケーション実装 実装の詳細 おわりに はじめに どうも、年明けおもしろ荘を見ながらブログを書いているけんつです。 前にMySQL 8 と docker-compose を使ってレプリケーションを構築する記事を書いたのだけど、そこではただバイナリログのポ…

docker-compose を使って MySQL8 の レプリケーションを構築する

はじめに MySQL のレプリケーション レプリケーション形式 目的とする構成 成果物 Binary Log File Position Based Replication の構築 Master サーバの設定 Slave の設定 レプリケーションユーザを作成する 余談 レプリケーションマスターバイナリログのポ…

InnoDB におけるページとインデックスの物理的な構成について

この記事は「 けんつの1人 DBMS アドベントカレンダー Advent Calendar 2019 - Adventar 」 9日目の記事です。 はじめに 参考にしたサイト InnoDB のスペースファイルレイアウト ページ構成 FIL Header FIL Trailer Header, Trailer の構造的特徴 スペース…

既存の RDBMS のストレージがどのような仕組みになっているのか調べてみる

この記事は「 けんつの1人 DBMS アドベントカレンダー Advent Calendar 2019 - Adventar 」 8日目の記事です。 はじめに ここまで勉強してみて InnoDB を追っていく。 InnoDB のアーキテクチャ Adaptive Hash Index Buffer Pool Table Space OS Cache と Da…

MySQL の SubQuery と Join をハイパー雑にまとめていく

はじめに 開発環境 サンプルデータ 構造 余談 手元の環境を MySQL 5.7 から 8.0 に更新した話 MySQL 8.0 では認証プラグインが変更されている SubQuery 余談 JOIN INNER JOIN OUTER JOIN LEFT OUTER JOIN RIGHT OUTER JOIN 余談 さいごに はじめに どうも、…

MySQL の BLACKHOLE Engine とバイナリログを使ってリアルタイムにイベントをハンドリングする何かを作る

はじめに 何をやるか どうしてやるか BLACKHOLE Engine とは バイナリログとは 実装する MySQL (Master - Slave 構成) Golang 実装 これの辛い所 まとめ はじめに どうも、最近「FLASH」を見たいがために Hulu を契約したら意外と面白いコンテンツ多くてなん…

MySQLで大量のテストデータを用意したい

はじめに 環境構築 大量のデータをどうにかして用意する おわりに はじめに どうも、最近みたハクソーリッジという映画が最高に琴線に響いて何度も見ているけんつです最近、データベース周りの勉強をしてみようと思ったのですが何かが足りないことに気が付き…