Thuta Learning
ရှာဖွေရန်
ExercisesData & Databasesbeginner

Exercise 1 — Query Debugging Lab

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • Exercise 1 — Query Debugging Lab concept ကို နားလည်ရှင်းပြနိုင်ရန်
  • နမူနာ SQL/command ကို ကိုယ်တိုင် run ပြီး output စစ်နိုင်ရန်
  • Tutorial Platform project နှင့် production scenario တွင် အသုံးချနိုင်ရန်

နားလည်ထားရမယ့် အချက်

Database debugging မှာ query ကိုတစ်ကြောင်းလုံးပြင်မည့်အစား result grain၊ base rows၊ join တစ်ခုစီ၊ filters နှင့် aggregates ကိုအဆင့်လိုက်စစ်ပါတယ်။ Small deterministic fixture နဲ့ expected rows ကိုကြိုရေးထားရင် bug ကိုမြန်မြန်ဖမ်းနိုင်ပါတယ်။

လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်

ပေးထားသော report က enrollment count ကို lesson count နဲ့မြှောက်ထားတာ၊ LEFT JOIN ကို WHERE filter နဲ့ဖျက်ထားတာနဲ့ NULL comparison မှားတာကို test rows ငါးခုဖြင့်သက်သေပြမယ်။ Corrected query နှင့် regression test fixture ကိုအတူပေးပါ။

အတူတူ စမ်းရေးကြည့်မယ်

sql
-- Buggy: enrollments are multiplied by lessons
SELECT t.title, count(e.enrollment_id) AS enrollments
FROM app.tutorials t
LEFT JOIN app.enrollments e USING (tutorial_id)
LEFT JOIN app.lessons l USING (tutorial_id)
WHERE l.duration_minutes > 0
GROUP BY t.title;

-- One possible correction
SELECT t.title, count(e.enrollment_id) AS enrollments
FROM app.tutorials t
LEFT JOIN app.enrollments e USING (tutorial_id)
WHERE EXISTS (SELECT 1 FROM app.lessons l
              WHERE l.tutorial_id = t.tutorial_id
                AND l.duration_minutes > 0)
GROUP BY t.tutorial_id, t.title;
You should see
Bug explanation၊ corrected query နှင့် reproducible fixture ရမည်။

၅ မိနစ် စမ်းကြည့်

Buggy query ကိုကိုယ်တိုင် run ပြီး intermediate row set ကို print ထုတ်ကာ multiplication ဘယ်မှာဖြစ်သလဲမှတ်ပါ။

သတိလေးတစ်ချက်

`DISTINCT` ထည့်ပြီး result တည့်သွားတာကို root fix မယူဆပါနှင့်—grain/relationship bug ကိုဖုံးထားနိုင်ပါတယ်။

PostgreSQL — QueriesPostgreSQL Global Development Group

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • `DISTINCT` ထည့်ပြီး result တည့်သွားတာကို root fix မယူဆပါနှင့်—grain/relationship bug ကိုဖုံးထားနိုင်ပါတယ်။
  • နမူနာ code ကို production data ပေါ် တိုက်ရိုက်မစမ်းဘဲ local/test database နှင့် recoverable backup ပေါ်တွင် အရင်အတည်ပြုပါ။

လေ့ကျင့်ခန်း

Buggy query ကိုကိုယ်တိုင် run ပြီး intermediate row set ကို print ထုတ်ကာ multiplication ဘယ်မှာဖြစ်သလဲမှတ်ပါ။

You'll know it worked when: Bug explanation၊ corrected query နှင့် reproducible fixture ရမည်။

Exercise 1 — Query Debugging Lab | Thuta Learning