તમારા Apex માં Summer '26 માં ઓછા રેકોર્ડ્સ મળી શકે છે
Salesforce Summer '26 (API v67.0) Apex માં એક મોટો ફેરફાર લાવે છે. આ ફેરફાર કોઈ એરર (error) આપ્યા વગર તમારા કોડના પરિણામો બદલી શકે છે.
વર્ષોથી, Apex ડિફોલ્ટ રીતે system mode માં ચાલતું હતું. આનો અર્થ એ હતો કે SOQL, SOSL, અને DML યુઝર પરમિશન (user permissions) અને શેરિંગ નિયમોને (sharing rules) અવગણતા હતા. તમારો કોડ એવા યુઝર્સને ડેટા બતાવી શકતો હતો જેમને તે જોવાનો અધિકાર ન હોવો જોઈએ.
API v67.0 માં, ડિફોલ્ટ બદલાઈ જાય છે. હવે ડેટાબેઝ ઓપરેશન્સ user mode માં ચાલે છે.
v67.0 માં શું બદલાય છે:
• SOQL, SOSL, અને DML ડિફોલ્ટ રીતે યુઝર પરમિશન અને શેરિંગ નિયમો લાગુ કરે છે. • જે ક્લાસમાં કોઈ sharing declaration નથી, તે હવે ડિફોલ્ટ રીતે "with sharing" તરીકે ગણાશે. • "WITH SECURITY_ENFORCED" ને દૂર કરવામાં આવ્યું છે. તેના બદલે તમારે "WITH USER_MODE" નો ઉપયોગ કરવો પડશે. • Triggers હંમેશા system mode માં જ ચાલશે.
આ ફેરફાર તમારા ક્લાસના API વર્ઝન સાથે જોડાયેલ છે. જ્યાં સુધી તમે તમારા જૂના ક્લાસને 67.0 પર અપગ્રેડ નહીં કરો ત્યાં સુધી તે એવા જ રહેશે. આ તમને માઈગ્રેશન (migration) પર નિયંત્રણ રાખવામાં મદદ કરે છે.
આ છૂપી સમસ્યાઓથી સાવધ રહો:
- ક્વેરીઝમાં ઓછા રેકોર્ડ્સ: યુઝર પાસે એક્સેસ ન હોવાને કારણે ક્વેરી 500 ને બદલે 40 રો (rows) રિટર્ન કરી શકે છે. આના કારણે ખોટા ટોટલ અને ખોટા રિપોર્ટ્સ આવી શકે છે.
- કમ્પાઈલેશન એરર્સ (Compilation errors): નવા વર્ઝનમાં "WITH SECURITY_ENFORCED" કમ્પાઈલ કરવામાં નિષ્ફળ જશે.
- ઇન્ટિગ્રેશન નિષ્ફળતા (Integration failures): ઇન્ટિગ્રેશન યુઝર્સ ઓટોમેટેડ જોબ્સ માટે જરૂરી ડેટાનો એક્સેસ ગુમાવી શકે છે.
- શેરિંગમાં ફેરફાર: જે ક્લાસ 'no sharing declaration' પર આધારિત હતા, તેઓ હવે શેરિંગ લાગુ કરશે.
સુરક્ષિત રીતે માઈગ્રેટ કેવી રીતે કરવું:
- તમારા કોડનું ઇન્વેન્ટરી (Inventory) કરો: "WITH SECURITY_ENFORCED" અને શેરિંગ ડેક્લેરેશન વગરના ક્લાસ શોધો.
- સેન્ડબોક્સ (sandbox) માં ટેસ્ટ કરો: કંટ્રોલર્સ અને REST endpoints જેવા ઉચ્ચ જોખમ ધરાવતા ક્લાસને પહેલા અપડેટ કરો.
- System.runAs() નો ઉપયોગ કરો: ફક્ત ટેસ્ટ પાસ થાય છે તેના પર ભરોસો ન કરો. ડેટા વિઝિબિલિટી (data visibility) તપાસવા માટે પ્રતિબંધિત યુઝર્સ સાથે ટેસ્ટ કરો.
- હેતુપૂર્ણ બનો: જ્યારે તમારી પાસે ચોક્કસ કારણ હોય ત્યારે જ "SYSTEM_MODE" અથવા "without sharing" નો ઉપયોગ કરો.
અત્યારે આ ફેરફારો કરવાથી ભવિષ્યમાં પ્રોડક્શનમાં આવતી છૂપી ભૂલો (bugs) અટકાવી શકાય છે.
વૈકલ્પિક લર્નિંગ કોમ્યુનિટી: https://t.me/GyaanSetuAi