3101 件中 551 - 560 件を表示
« 前の 10 件 | 次の 10 件 »
MySQLで未定義のユーザ変数の表示がおかしい(8.0.20)

MySQL では @ で始まるユーザ定義変数を使うことができます。

mysql> SET @v1=123, @s1="ABC";
Query OK, 0 rows affected (0.00 sec)

 こんなふうに定義すると、SELECTなどで使うことができます。
ここで、上で定義した2つの変数と、未定義の変数をSELECT文で見てみると:

mysql> SELECT @v1, @s1, @t1;
+------+------+------------+
| @v1  | @s1  | @t1        |
+------+------+------------+
|  123 | ABC  | 0x         |
+------+------+------------+

 上で値をセットした v1, s1 は、それぞれセットしたとおりの値が表示されていますが、未定義の @t1 には "0x" と表示されてしまいました。


 値が NULL だとそうなるのか?

mysql> SET @s1=NULL;

mysql> SELECT @v1, @s1, @t1; …
[さらに読む]
MySQL: COUNT(*) は 1 ??

Twitterに書き殴ったのですが、流れてしまうので、一応こちらにもまとめておこうかと。

これって、何を数えているんでしたっけ?

mysql> SELECT COUNT(*);
+----------+
| COUNT(*) |
+----------+
| 1 |
+----------+

— 坂井 恵(SAKAI Kei) (@sakaik) 2020年5月1日

 コトの発端はちょっとした打ち間違いだったのですが、MySQL は FROM 書かなくても演算できます。こんな感じ。

mysql> SELECT 3;
+---+
| 3 |
+---+
| 3 |
+---+

mysql> SELECT SQRT(64);
+----------+
| SQRT(64) | …
[さらに読む]
RubyでMySQLのUDFを作る

昨日はCでMySQLのUDFを作ってみたんだけど、今日はRubyで作ってみる。Rubyと言ってもmrubyだけど。

mrubyは5年ぶりくらいに使ってみたんだけど、相変わらずドキュメントが少なくてなかなかつらい…。

まず mruby のビルド。MySQLのUDFは共有ライブラリにしないといけないので、パッチをあてて make。

% git clone git@github.com:mruby/mruby.git
% cd mruby
% patch -p1 < /path/to/mruby-shared.patch
% make

mruby-shared.patch はこれ

diff --git a/build_config.rb b/build_config.rb
index 254a28ce..310191e3 100644
--- a/build_config.rb
+++ b/build_config.rb
@@ -35,6 +35,10 @@ MRuby::Build.new do |conf|
   #   cc.compile_options = %Q[%{flags} -MMD -o "%{outfile}" -c "%{infile}"]
   # end
 
+  conf.cc do |cc|
+    cc.flags = '-fPIC'
+  end
+
   # mrbc …
[さらに読む]
とみたさんの記事を見てUDFにトライ

とみたさんの UDF を作ろう記事を、そのまま試してみました。

tmtms.hatenablog.com

ほとんど、書かれているとおりにソースコードをコピーして gcc かけて プラグイン動作させれば良いです。が、少しだけ悩んだ点があるので、そこだけ補足的メモ。

gcc がなかった!

 結構、素のままの ubuntu 18.04 だったので、 …

[さらに読む]
メモ:MySQLのサーバサイドでのプリペアド・ステートメント

通常は各プログラム言語側で プレースホルダ含みのSQLを書いたりするけど、
サーバ側での(というかSQLレベルでの)プリペアド・ステートメントの書き方に触れる機会があったので、メモとして記す。

テーブルの用意

 とりあえず、id と name を格納するテーブルを作ってみる。

mysql> CREATE TABLE presample (id integer, name varchar(10));                                                                   

プリペアド …

[さらに読む]
MySQLのユーザー定義関数(UDF)

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 …
[さらに読む]
MySQLで今月の日付一覧を得る with 再帰CTE

sakaikさんのブログで今月の日付一覧を得るクエリを読んでいて、ここで紹介されているクエリが手元で実行できなかったので、メモ。

sakaik.hateblo.jp

原因は手元の環境が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; …
[さらに読む]
performance_schema.clone_progress が何となくそれっぽい順番に並ぶ理由

TL;DR

  • datadir/#clone/#view_progress という平文のファイルがこのテーブルの本体だから

俺は途中まで作業をしていて聞き逃したんですけど、 Open Source Conference 2020 Online/Springかじやまさんのセッション でそんな話題が挙がったらしく。

ps.clone_progress からのSELECTの時ってORDER BY なくても「良い感じの順」で返してくれるのかな。返してくれるような気もするけど「ORDER BY を指定しないときの順は不定ですよ」と入門講座とかで口を酸っぱくしている身には、少し気持ち悪い(笑)。 …

[さらに読む]
Update for last week (2020-04-20~ 2020-04-26)

MySQL Weeklyでは1週間ごとにMySQLのrelease-note, bug, official blog, organizationによるblog, 個人のblogをまとめ紹介しています。
更新は月曜 10時(AM)です。先週一週間のMySQL関連の更新を再確認するのにご活用ください。

また、このブログ記事はGitHub上で管理されていますMySQL-weekly repository。Issue, pull-request歓迎です。(完全に同期できているわけではありません)

Release note

( …

[さらに読む]
baserCMS 4.3.3を新規サーバに入れるメモ(MySQL8.0使用)

baserCMS を初めてインストールしたのですが、細かいところで色々ハマったので、記録として書いておきます。
basercms.net

環境

 さくらインターネットで借りているVPS に、Ubuntu 18.04 amd64 をインストール。
 ドメイン名は別途持っているものがあったので、予めこのサーバにDNS設定で向けておく(ここでは svr1. …

[さらに読む]
3101 件中 551 - 560 件を表示
« 前の 10 件 | 次の 10 件 »