فقدان خطط الاستعلام في Data Explorer

أثناء استخدام مستكشف البيانات، تساءلت مؤخرًا عن الغرض من “تضمين خطة الاستعلام”. لذلك قمت بتمكينه لمعرفة ذلك - لكنني لم ألاحظ أي تغيير.

لذلك سألت شخصًا تعلمت منه الكثير على مر السنين وشاركني لقطة شاشة لكيفية ظهورها. كنت فضوليًا بشأن سبب عدم عملها، لذلك تحققت ولاحظت أن explain: true مضمن في الطلب المرسل[1]، ولكنه غير مضمن في الاستجابة[2]. لذلك حاولت فهم أين ضاع. في مرحلة ما سألت ChatGPT لأنني لم أكن متأكدًا من أين أنظر بعد ذلك. لقد كان مفيدًا للغاية ووجهني خلال عملية تصحيح الأخطاء بأكملها. جربت الإصلاح، بعد إضافة explain: opts[:explain] ظهرت خطة الاستعلام. على الرغم من أنني يجب أن أعترف بأن لدي فكرة باهتة عما كنت أفعله. لهذا السبب طلبت من ChatGPT كتابة ملخص لنتائجنا لتقرير الأخطاء[3]:

ملخص الخطأ - حقل `explain` مفقود في نتائج الاستعلام (مستكشف بيانات Discourse) AI

المشكلة:
لم يتم تضمين حقل explain في استجابة JSON لنقطة نهاية /run في مستكشف البيانات، حتى عند تمرير explain=true في الطلب. نتيجة لذلك، لم تكن خطط الاستعلام مرئية في واجهة المستخدم الأمامية، على الرغم من أن Postgres أعادها بشكل صحيح.

السبب الجذري:
بينما قام الواجهة الخلفية بتمرير opts[:explain] = true بشكل صحيح إلى منطق تنفيذ الاستعلام وكان قيمة result[:explain] موجودة، لم يتم إعادة توجيه هذه القيمة إلى ResultFormatConverter. طريقة to_json في ResultFormatConverter تتضمن المفتاح explain فقط إذا كان opts[:explain] == true. ومع ذلك، لم يتم تضمين هذا الخيار في استدعاء convert.

الإصلاح:
أضف explain: opts[:explain] إلى استدعاء ResultFormatConverter.convert، كالتالي:

render json:
          ResultFormatConverter.convert(
            :json,
            result,
            query_params: query_params,
            download: params[:download],
+           explain: opts[:explain]
          )

النتيجة:
بمجرد تمريرها بشكل صحيح، يتم تضمين حقل explain في استجابة JSON ويتم عرضه بشكل صحيح في واجهة المستخدم الأمامية.


  1. \n

    \n ↩︎

  2. \n

    \n ↩︎

  3. لقد أضفت رابط GitHub ونسقت المقتطف البرمجي ↩︎

3 إعجابات

عمل رائع في اكتشاف المشكلة!
أعتقد أنها مشكلة تراجعية من FEATURE: Allows CSV file result to be attached in automated PMs (#318) · discourse/discourse-data-explorer@cbae98f · GitHub.
تمت إعادة هيكلة الكود، ولكن تم حذف المعلمة explain.

إعجابَين (2)

شكراً لك على الإبلاغ عن هذه المشكلة. تم إصلاحها في طلب السحب هذا:

6 إعجابات