ممکن است Apex شما در Summer '26 رکوردهای کمتری برگرداند

Salesforce Summer '26 (API v67.0) تغییر بزرگی را در Apex ایجاد می‌کند. این تغییر می‌تواند بدون ایجاد خطا، نتایج کد شما را تغییر دهد.

سال‌ها بود که Apex به‌صورت پیش‌فرض در system mode اجرا می‌شد. این بدان معنا بود که SOQL، SOSL و DML مجوزهای کاربر (user permissions) و قوانین اشتراک‌گذاری (sharing rules) را نادیده می‌گرفتند. کد شما می‌توانست داده‌ها را به کاربرانی نشان دهد که نباید آن‌ها را می‌دیدند.

در API v67.0، حالت پیش‌فرض تغییر می‌کند. عملیات پایگاه داده اکنون در user mode اجرا می‌شوند.

تغییرات در v67.0:

• SOQL، SOSL و DML به‌صورت پیش‌فرض مجوزهای کاربر و قوانین اشتراک‌گذاری را اعمال می‌کنند. • کلاس‌هایی که فاقد اعلان sharing هستند، اکنون به‌صورت پیش‌فرض "with sharing" خواهند بود. • عبارت "WITH SECURITY_ENFORCED" حذف شده است. در عوض باید از "WITH USER_MODE" استفاده کنید. • تریگرها (Triggers) همیشه در system mode اجرا می‌شوند.

این تغییر به نسخه API کلاس شما وابسته است. کلاس‌های قدیمی شما تا زمانی که آن‌ها را به نسخه 67.0 ارتقا ندهید، بدون تغییر باقی می‌مانند. این ویژگی به شما اجازه می‌دهد فرآیند مهاجرت (migration) را کنترل کنید.

مراقب این مشکلات پنهان باشید:

چگونه با امنیت کامل مهاجرت کنیم:

انجام این تغییرات در حال حاضر، از بروز باگ‌های پنهان در محیط عملیاتی (production) در آینده جلوگیری می‌کند.

Source: https://dev.to/maintask/your-apex-might-return-fewer-records-in-summer-26-and-not-throw-a-single-error-26de

Optional learning community: https://t.me/GyaanSetuAi