When you update a blob attribute in a frozen table that has at least one RAM chunk, any subsequent SELECT query will wait until the table is unfrozen before it can read from it.
MRE:
➜ ~ mysql -P9306 -h0 -v -e "unfreeze t; drop table if exists t; create table t(a string); insert into t values(1, 'a'); flush ramchunk t; freeze t; update t set a='b' where id = 1;" &
[3] 92689
➜ ~ --------------
unfreeze t
--------------
--------------
drop table if exists t
--------------
--------------
create table t(a string)
--------------
--------------
insert into t values(1, 'a')
--------------
--------------
flush ramchunk t
--------------
--------------
freeze t
--------------
+------------------------------------------+------------------------------------------+
| file | normalized |
+------------------------------------------+------------------------------------------+
| /opt/homebrew/var/manticore/t/t.0.spa | /opt/homebrew/var/manticore/t/t.0.spa |
| /opt/homebrew/var/manticore/t/t.0.spb | /opt/homebrew/var/manticore/t/t.0.spb |
| /opt/homebrew/var/manticore/t/t.0.spd | /opt/homebrew/var/manticore/t/t.0.spd |
| /opt/homebrew/var/manticore/t/t.0.spe | /opt/homebrew/var/manticore/t/t.0.spe |
| /opt/homebrew/var/manticore/t/t.0.sph | /opt/homebrew/var/manticore/t/t.0.sph |
| /opt/homebrew/var/manticore/t/t.0.sphi | /opt/homebrew/var/manticore/t/t.0.sphi |
| /opt/homebrew/var/manticore/t/t.0.spi | /opt/homebrew/var/manticore/t/t.0.spi |
| /opt/homebrew/var/manticore/t/t.0.spidx | /opt/homebrew/var/manticore/t/t.0.spidx |
| /opt/homebrew/var/manticore/t/t.0.spm | /opt/homebrew/var/manticore/t/t.0.spm |
| /opt/homebrew/var/manticore/t/t.0.spp | /opt/homebrew/var/manticore/t/t.0.spp |
| /opt/homebrew/var/manticore/t/t.0.spt | /opt/homebrew/var/manticore/t/t.0.spt |
| /opt/homebrew/var/manticore/t/t.meta | /opt/homebrew/var/manticore/t/t.meta |
| /opt/homebrew/var/manticore/t/t.settings | /opt/homebrew/var/manticore/t/t.settings |
+------------------------------------------+------------------------------------------+
--------------
update t set a='b' where id = 1
--------------
➜ ~ mysql -P9306 -h0 -e "select * from t"
# waits here
Bug Description:
When you update a blob attribute in a frozen table that has at least one RAM chunk, any subsequent SELECT query will wait until the table is unfrozen before it can read from it.
MRE:
Manticore Search Version:
Manticore 6.3.7 6aa68659d@24102222 dev (columnar 2.3.1 30ad2d6@24100914) (secondary 2.3.1 30ad2d6@24100914) (knn 2.3.1 30ad2d6@24100914)
Operating System Version:
macos
Have you tried the latest development version?
No
Internal Checklist:
To be completed by the assignee. Check off tasks that have been completed or are not applicable.