md5で2つのデータベースを比較
先月、暫定サーバ(ver.17)データを仮サーバ(ver.15)にリストアした際、geminiが教えてくれた新旧データをmd5で比較するSQL文が使い物にならなかった。(aiも間違えるんだと実感したエピソード)
今回また、ほぼ同じ質問をした
仮サーバ(ver.15)データを新サーバ(ver.18)へリストア予定
改めてgeminiに新旧データを比較するSQL文を尋ねると、答えが進歩・改良されてました
gemini、自分で進化してる!
gemini、スゲ~!

gemini、下の2つはどう違うの?
1:SELECT md5(string_agg(hash, ”))FROM (SELECT md5(t.*::text) AS hash FROM (SELECT * FROM TBLmeisai ORDER BY IDmeisai) AS t ) AS sub;
2:SELECT md5(CAST((array_agg(f.* ORDER BY 1)) AS text)) FROM (SELECT * FROM [重要テーブル名]) AS f;
1は、前回ver.15とver.17のデータ比較でmd5が違った文
2が、gemini改良版
前回のgemini解説:
Ver.17: icu ロケールが標準になりつつある
Ver.15: 従来の libc ロケールが主流
この「並び順(ORDER BY)のルール」が 15 と 17 でわずかに異なるため、前にお伝えした string_agg を使った MD5 計算だと、並び順が変わってしまい、結果が合わなくなることがあります。
前回と今回のSQL比較解説

余談:
geminiが作ってくれた改良版md5比較SQL文(=160万円分の仕事してくれるかな)
あんな見積、止めたほうが良いですよ
SELECT md5(CAST((array_agg(f.* ORDER BY 1)) AS text)) FROM (SELECT * FROM [重要テーブル名]) AS f;
シンギュラリティ、いつか来るのかな?
コメントを残す