アーカイブ「2022年05月」

アプリケーションで長々SQLを書かなきゃいけないんだけど、

条件によってはSQLを評価しないときってあるかと思います。

たとえば、検索するときの対象テーブルとして、

  • 記事
  • 動画

の2つがあったとき、条件によっては、記事のみにしたいって場合です。

このとき、アプリケーションのIFで、動画のSQLは流さないようにするってのが普通だと思うんですが、

CTE(WITH)とか使っていると、後続の式(たとえばUNION)で動画の分を抜くとか調整しなくちゃいけなくてめんどくさかったり。。

そんなとき、ちょっと役に立つ技が「LIMIT 0」です。

これは、公式にも書いてあるように、即座に空の結果セットを返すというものです。

https://dev.mysql.com/doc/refman/8.0/ja/limit-optimization.html

explain時のExtraには、「Zero limit」というのが表示されます。

それ以外にも、SQLとして正しいかどうかだけをチェックするときにも使えたりします。

「LIMIT 0」以外にも、自分の小ネタを紹介しておきます。

たとえば、アプリケーションでWHEREを組み立てなきゃいけないとき、

条件がなにもなかったら、WHERE句自体を消すとかもありますよね。

そんなとき、自分は「1 = 1」で初期化しておくみたいなこともやったりします。

そうすると、WHERE句自体は残したままでよくなるので、文字列編集の煩わしさが減ります。

「LIMIT 0」とか「WHERE 1 = 1」とか、はっきいって邪道ですが、

使うと意外にアプリケーションでのSQL構築が楽になったりします。

以上

投稿日時:2022年05月10日 00:07   カテゴリー:mariadb, mysql   [コメントがあればどうぞ]

ubuntu22.04LTSがリリースされ、

私が使っているpoposも追従して22.04が発表されたので、

アップデートしてみました。

(popos)

https://pop.system76.com/

しかし、必ず悲劇はあるもので、今の所直面した悲劇を2つご紹介します。

①VPNがつながらない

私が努めている会社では、

  • YAMAHAルータのVPN(IPsec)
  • LINUXサーバのVPN(xl2tpd+IPsec)
  • OpenVPN

の3つを用意しているのですが、22.04へのアップデート直後は、

OpenVPN以外は接続できないという状態となりました。(poposがVPNクライアントです)

IPsecがつながらない原因を調査していくと、どうやら ubuntuのバグにも多数報告が上がっていました。

https://bugs.launchpad.net/ubuntu/+source/xl2tpd/+bug/1951832

ずっとたどっていくと、

「xl2tpd – 1.3.16-1ubuntu0.1」というバージョンが急遽リリースされたようで、

これをインストールすることで、

  • LINUXサーバのVPN(xl2tpd+IPsec)

はなんとかつながるようになりました。

しかし、YAMAHAルータの方は、接続はできても、その後以下のようなエラーが発生し、切断されてしまいます。※経路の確立ができていない感じですかね。

xl2tpd[10265]: check_control: Received out of order control packet on tunnel 37328 (got 2, expected 3)
xl2tpd[10265]: handle_control: bad control packet!

これについては、ちょっとわかならい。。認証か暗号化の段階なのか。。

SSHがつながらない

というかつながるHOSTとつながらないHOSTが発生した。

つながらないHOSTをよくみたら、

sign_and_send_pubkey: no mutual signature supported

というエラーが発生していた。

これは、

20.04のときのOpenSSHクライアントが8.2で、

22.04になったらOpenSSHクライアント8.9になっており、

間の8.3リリースで、「ssh-rsa」が禁止されているためであった。

とりあえず、~/.ssh/configに以下の記載を追加して対応。

Host *
    HostKeyAlgorithms +ssh-rsa
    PubkeyAcceptedKeyTypes +ssh-rsa

途中の非LTSを飛ばしたので、なかなか大変。。

というわけで、アップデートは計画的に。

以上

投稿日時:2022年05月09日 23:30   カテゴリー:popos, ubuntu   [コメントがあればどうぞ]