Можно ли использовать базу данных Android Room для создания таблицы R*Tree?

#android #database #entity #android-room #r-tree

Вопрос:

Я хотел бы продолжать использовать Room, но я не вижу способа создать объект, который использует rtree. Есть аннотации @FTS3 и @FTS4, но для RTree я ничего не вижу. Возможно ли создать объект с помощью R-дерева?

Я пытался выполнить миграцию с помощью этого кода, но у меня все равно не было бы места для объекта…

 val TABLE_CREATE = "CREATE VIRTUAL TABLE if not exists my_table_name USING rtree("  
       "row_id,"            // Primary key
       "minX, maxX,"        // Minimum and maximum X coordinate
       "minY, maxY"         // Minimum and maximum Y coordinate
");"
db.execSQL(TABLE_CREATE)
 

Ответ №1:

Я считаю, что в настоящее время невозможно использовать RTree в номере.

Для использования RTree вам понадобится дистрибутив SQLite, который скомпилирован с параметром-DSQLITE_ENABLE_RTREE=1.

Комната-это абстрактный слой над SQLite, который распространяется вместе с устройством Android и, я полагаю, не поддерживает RTree (если бы это было так, я бы предположил, что тогда будет доступна аннотация @RTree).

например, на API 31, если вы попытаетесь использовать, вы получите :-

 E/SQLiteLog: (1) statement aborts at 28: [CREATE VIRTUAL TABLE rtree1 USING rtree(id,minX,maxX,minY,maxY);] no such module: rtree
 

т. е. rtree не включен.