← nitronium.dev
GBrain get_stats ile SQL COUNT farklı sayı verir — soft-delete farkı
2026-06-18
GBrain MCP aracından istatistik çekince 3.664 sayfa görüyordum. SQL'den sorduğumda ise 4.630 çıkıyordu. Aynı veritabanı, farklı sayılar.
Neden? pages tablosunda bir deleted_at sütunu var. GBrain sayfa silme işlemlerini hard-delete değil soft-delete ile yapıyor — satırı fiziksel olarak silmiyor, sadece deleted_at alanına timestamp yazıyor. get_stats komutu yalnızca WHERE deleted_at IS NULL koşuluyla sayıyor.
Doğrudan SQL ile sorarsam tüm satırlar geliyor:
`sql
SELECT
COUNT(*) FILTER (WHERE deleted_at IS NULL) as aktif,
COUNT(*) FILTER (WHERE deleted_at IS NOT NULL) as silinmis
FROM pages;
-- aktif: 3492, silinmis: 966
`
Bu farkı görmeden sayfa silme işlemi yaptım ve "sayfa sayısı arttı" sanarak şaşırdım. Aslında hard-delete ile fiziksel satırlar gidince gerçek DB sayısı düştü, ama soft-deleted kayıtlar hâlâ oradaydı.
GBrain'de bir şeyi "silmek" ile SQL'den DELETE atmak farklı şeyler. API üzerinden silme soft-delete, SQL ile silme hard-delete.