objectbox / objectbox/objectbox-java

Only re-deliver query results if results have changed

Đang mở
#975 5 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

enhancement
Ngôn ngữ chính
Java
Star
4.6k
Fork
311
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

Code example probably will be best description here.

@Entity
class KAEntry(
    @Unique val key: String,
    val value: String,
    @Id var id: Long = 0
)

class MyApp : Application() { 
    private lateinit var subs1: DataSubscription
    private lateinit var subs2: DataSubscription
    private lateinit var boxStore: BoxStore
        private set
   
    override fun onCreate() {
        super.onCreate()
        boxStore = MyObjectBox.builder().name("main").androidContext(this).build()
        val box = boxStore.boxFor(KAEntry::class.java)
        box.removeAll() // just for reproducibility, to avoid "unique constraint violation" on second run of app

        subs1 = box.query().equal(KAEntry_.key, "key1")
            .build().subscribe().observer { v ->
                Log.i("MyApp", "triggered for key1" )
            }

        subs2 = box.query().equal(KAEntry_.key, "key2")
            .build().subscribe().observer { v ->
                Log.i("MyApp", "triggered for key2" )
            }

        box.put(KAEntry("key1","some value"))
    }
}

Problem is that even I've only put "key1" object and therefore only first query should trigger it's observer - both actually get triggered:

2021-04-05 14:22:53.263 25926-25962/com.acme I/MyApp: triggered for key1
2021-04-05 14:22:53.263 25926-25963/com.acme I/MyApp: triggered for key2

Either I don't understand something or this observer on query actually bugged.
I can see that triggering observer for only those objects that are changed and are in query result may have some performance impact. Though even in this case I would like to have some way of detecting that change was made to objects that query returns and not any object of this type.

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Không có tệp mã nguồn, bài kiểm thử hoặc điểm vào nào được nêu tên. Hãy bắt đầu bằng cách tái hiện ví dụ đăng ký theo dõi truy vấn bằng Kotlin, sau đó lần theo phần triển khai query observer và các bài kiểm thử của nó, nếu có. Công việc được xem là hoàn tất khi các observer chỉ được thông báo khi kết quả truy vấn của chúng thay đổi, hoặc khi cách được hỗ trợ để phát hiện các thay đổi liên quan của đối tượng được ghi lại trong tài liệu.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
kotlin
Lĩnh vực
databases, mobile-dev
Loại issue
Lỗi
Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
25/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.