とみたさんの UDF を作ろう記事を、そのまま試してみました。
ほとんど、書かれているとおりにソースコードをコピーして gcc かけて プラグイン動作させれば良いです。が、少しだけ悩んだ点があるので、そこだけ補足的メモ。
gcc がなかった!
結構、素のままの ubuntu 18.04 だったので、 …
[さらに読む]MySQLのユーザー定義関数(UDF)は大昔に作った記憶があるけど、最近作ってなかったので試しに作ってみたメモ。
関数の中身はなんでも良かったんだけど、フィボナッチ数を求める fib()
を作ってみた。
ちゃんと知りたい場合は、マニュアルとかサンプルプログラムを見ましょう。
% gcc -shared -I /usr/local/mysql/include fib.c -o fib.so % sudo cp fib.so /usr/local/mysql/lib/plugin/ % /usr/local/mysql/bin/mysql -uroot mysql> create function fib returns integer soname 'fib.so'; Query OK, 0 rows affected (0.02 sec) mysql> select n, fib(n) from (values row(1),row(2),row(3),row(4),row(5),row(6),row(7),row(8),row(9),row(10)) as n(n); +----+--------+ | n …[さらに読む]
sakaikさんのブログで今月の日付一覧を得るクエリを読んでいて、ここで紹介されているクエリが手元で実行できなかったので、メモ。
原因は手元の環境が8.0.17でVALUES()関数がなかったことが原因。
よく見るとvalues()関数でテーブルを作って、それを自己結合しつつ出力を作ってソートしている。
再帰CTEでシーケンスが作れるので、それを使っても良いかもなと思い、復習がてら書いてみました。
with recursive rec(V, D) as ( select 1, cast(date_format(@dt, '%Y-%m-01') as date) union all select V+1, date_add(D, interval +1 day) from rec where D < last_day(@dt) ) select D as `DATE` from rec; …[さらに読む]
TL;DR
datadir/#clone/#view_progress
という平文のファイルがこのテーブルの本体だから
俺は途中まで作業をしていて聞き逃したんですけど、 Open Source Conference 2020 Online/Spring の
かじやまさんのセッション でそんな話題が挙がったらしく。
ps.clone_progress からのSELECTの時ってORDER BY
なくても「良い感じの順」で返してくれるのかな。返してくれるような気もするけど「ORDER BY
を指定しないときの順は不定ですよ」と入門講座とかで口を酸っぱくしている身には、少し気持ち悪い(笑)。 …
ふと、今月の日付一覧が欲しくなって、MySQLでやってみた。以前は、カマセデータ用に一時的にテーブルを作る必要があったけど、今は VALUES文のおかげで、随分ラクになった、、、、かな。
今月ついたちの日付を得るのは、色々なやり方があるけれども、これがシンプル。
mysql> SELECT DATE_FORMAT(NOW(), '%Y/%m/01'); +--------------------------------+ | DATE_FORMAT(NOW(), '%Y/%m/01') | +--------------------------------+ | 2020/04/01 | +--------------------------------+ 1 row in set (0.00 sec)
これに適当な日数を加えれば、任意の日付を得られるので、例えば4日加えるのは、こう。
mysql> SELECT DATE_ADD( -> …[さらに読む]
ただのメモです。
pt-query-digest
percona tookit に含まれるツールの1つ。 スロークエリログやtcpdump からクエリを抽出して、クエリを集計するツール。 負荷をかけているクエリを洗い出すのに便利なヤツ。
https://www.percona.com/doc/percona-toolkit/LATEST/pt-query-digest.html
いつものコマンド
InnoDB_IO_r_bytes
は Vanilla MySQLでは出力されない。Percona でしか動かない。
$ pt-query-digest --group-by fingerprint --order-by …[さらに読む]
feature request
MySQL のバグは bugs.mysql.com で管理されています。 このサイトにはバグだけでなく、機能改善(feature request) の要望も投稿できます。
眺めてみる
普段はバグ(不具合)に注目してみているのですが、今日は、FRをみてみようと思います。
Advanced Search から StatusがVerified、Severity が S4(Feature request ) を条件として検索してみます。 ID順でソートし、最近投稿されたものを見てみます。
bugs.mysql.com
これ確かに欲しい!と思ったら
Affects me …
[さらに読む]TL;DR
NO_UNSIGNED_SUBTRACTION
を追加してから実行する
たとえば、
performance_schema.events_statements_summary_by_digest
の結果を延々とため込んでいるようなテーブルがあるとするじゃろ? sum_rows_examined
は累計値なので、グラフにする時なぞは前回との差分を取りたくなるので、MySQL 8.0からようやく使えるようになった
LAG なぞ使うではないか。
mysql> WITH base AS
-> (
-> SELECT
-> digest,
-> sum_rows_examined - LAG(sum_rows_examined) OVER w AS diff_exam,
-> last_update,
-> …
[さらに読む]