E.g there is an alias :Comment/text on :Comment/text.v1 but I want to use :Comment/text for :Comment/text.v2 now, my steps to test this case are the next:
1: Set alias on :Comment/text.v1
(d/transact
connComment
[[:db/add :Comment/text.v1 :db/ident :Comment/text]
])
2: So, :Comment/text can be used for transacting and querying, everything is expected
Now, I want to use :Comment/text for :Comment/text.v2:
3: I believe the alias should be retracted from idents of previous attribute
(d/transact
connComment
[[:db/retract :Comment/text.v1 :db/ident :Comment/text]
])
So, the transaction is executed successfully,
4: But after executing the above transaction :Comment/text still can be used, okay, no problem, unsetting from old attribute and setting for new one can be executed within the same transaction
(d/transact
connComment
[[:db/retract :Comment/text.v1 :db/ident :Comment/text] [:db/add :Comment/text.v2 :db/ident :Comment/text]
] )
Now :Comment/text points to :Comment/text.v2. What Iām wondering whether it is legal way to reuse aliases by other attributes
P.S. After retracting alias from attribute datomic UI does not work(attributes tree panel)
Stack trace in UI console:
java.lang.NullPointerException
at clojure.core$namespace.invokeStatic(core.clj:1603)
at clojure.core$namespace.invoke(core.clj:1597)
at clojure.core$comp$fn__5807.invoke(core.clj:2569)
at clojure.core$group_by$fn__8507.invoke(core.clj:7156)
at clojure.core.protocols$naive_seq_reduce.invokeStatic(protocols.clj:62)