Я использую версию couchbase lite android-ee:2.1.2
.Я сохранил некоторые данные в локальной базе данных couchbase lite.Теперь я пытаюсь запросить данные из локальной базы данных couchbase lite с помощью запроса регулярного выражения, например,
Query query = QueryBuilder
.select(SelectResult.property("info"))
.from(DataSource.database(localDatabase))
.where(Expression.property("info").regex(Expression.string("^v" + "_" + "(4.6.2|1.7.7)" + "_" + "[123]" + "_" + "[12345678]")));
И моя база данных выглядит так:
v_1.7.7_1_3
v_1.7.5_1_3
v_4.7.1_2_8
v_4.7.1_1_8
v_4.7.2_2_8
v_4.7.2_2_8
v_4.7.1_1_8
v_4.7.1_2_8
v_4.7.5_1_8
v_4.9.3_1_1
...
...
...
and so on many entries
Чтобы понять структуру базы данных, давайтевозьмите пример v_1.7.7_1_3
здесь v
может быть определено как просто значение, 1.7.7
является тегом, тогда 1
является родительским классом (это может быть типа 1,2 и 3), а затем 3
является дочернимкласс (это может быть типа 1,2,3,4,5,6,7 и 8).
Теперь пользователь может выбрать несколько тегов, родительских классов и дочерних классов.Затем я должен запросить данные из локальной базы данных couchbase lite в соответствии с параметрами, выбранными соответственно.В настоящее время, как я уже говорил выше, я пытаюсь запросить данные с помощью регулярных выражений, например,
Например, пусть пользователь выбрал теги 4.6.2
и 1.7.7
, тогда родительские классы равны 1,2и 3, а затем детские классы 1-8.Таким образом, мой запрос будет выглядеть так:
"^v" + "_" + "(4.6.2|1.7.7)" + "_" + "[123]" + "_" + "[12345678]"
Я уже пробовал этот запрос на https://regex101.com, где он работает отлично, но не с couchbase lite.
Хотя приложениепросто сбой с фатальной ошибкой,
A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 25543 (.mains.activity)
Вот некоторые журналы,
V/Query: Query encoded as {"WHAT":[[".info"]],"WHERE":["regexp_like()",[".info"],"^v_(4.6.2|1.7.7)_[123]_[12345678]"]}
I/LiteCore [Query]: {Query#3}==> N8litecore11SQLiteQueryE 0x7f5a2d9098
I/LiteCore [Query]: {Query#3} Compiling JSON query: {"WHAT":[[".info"]],"WHERE":["regexp_like()",[".info"],"^v_(4.6.2|1.7.7)_[123]_[12345678]"]}
I/LiteCore [Query]: {Query#3} Compiled as SELECT fl_result(fl_value(body, 'info')) FROM kv_default WHERE (regexp_like(fl_value(body, 'info'), '^v_(4.6.2|1.7.7)_[123]_[12345678]')) AND (flags & 1) = 0
A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 28308 (.mains.activity)