invalid ‘depends_on macos’ value: “>= :leopard”

下記エラーの対処方法について

$ brew uninstall sequel-pro
Error: Cask 'sequel-pro' definition is invalid: invalid 'depends_on macos' value: ">= :leopard"

以下のエラーで削除も更新も出来ない場合

Error: Cask 'eclipse-jee' definition is invalid: invalid 'depends_on macos' value: ":leopard"

以下を実行する

/usr/bin/find "$(brew --prefix)/Caskroom/"*'/.metadata' -type f -name '*.rb' -print0 | /usr/bin/xargs -0 /usr/bin/sed -i '' '/depends_on > macos:/d'

brew-cask-depends_on-macos.md

MySQL Unique Key の NULL の扱い

論理削除カラムと一緒にUnique Key 設定しても論理削除カラムがNULLだとUniqueにはならないよ、という話。

mysql> create unique index idx ON users(email, deleted_at);
mysql> select * from users;
+------+-------+---------------------+
| id   | email | deleted_at          |
+------+-------+---------------------+
|    1 | x     | NULL                |
|    1 | x     | NULL                |
|    1 | x     | 2020-09-25 00:00:00 |
+------+-------+---------------------+

MySQL Generated indexで(エセ)部分Index

Postgresの部分INDEX

部分Indexを使ってユニーク制約をかける例

CREATE UNIQUE INDEX uidx_email ON account(email) WHERE del_flg = 0;

MySQLの場合

MySQL5.7以降、MySQLでGenerated columnを使えるようになりました。 これは、SQLによる演算結果をカラムとして見せる手法です。 まが、このGenerated columnにはindexを追加することができます。

MySQL5.7以降で条件付きのユニーク制約をかけるためのベストプラクティス - Qiita

mysql> CREATE TABLE IF NOT EXISTS account (
    ->   id               bigint(20)   NOT NULL     AUTO_INCREMENT,
    ->   email            varchar(255) DEFAULT NULL,
    ->   create_timestamp timestamp    NULL DEFAULT NULL,
    ->   update_timestamp timestamp    NULL DEFAULT NULL,
    ->   del_flg          bool         NOT NULL,
    ->   active_email     varchar(255) GENERATED ALWAYS AS ((case when (del_flg = 0) then email else NULL end)) VIRTUAL,
    ->   PRIMARY KEY (id),
    ->   UNIQUE KEY uidx_active_email (active_email)
    -> );
Query OK, 0 rows affected (0.04 sec)

active_emailを仮想的なカラムとして設定し、それにINDEXを仕掛ける手法。