public FastDeserializer executePlanFragments ( int numFragmentIds , long [ ] planFragmentIds , long [ ] inputDepIds , Object [ ] parameterSets , DeterminismHash determinismHash , String [ ] sqlTexts , boolean [ ] isWriteFrags , int [ ] sqlCRCs , long txnId , long spHandle , long lastCommittedSpHandle , long uniqueId , long undoQuantumToken , boolean traceOn ) throws EEException { try { // For now, re-transform undoQuantumToken to readOnly. Redundancy work in site.executePlanFragments() m_fragmentContext = ( undoQuantumToken == Long . MAX_VALUE ) ? FragmentContext . RO_BATCH : FragmentContext . RW_BATCH ; // reset context for progress updates m_sqlTexts = sqlTexts ; if ( traceOn ) { final VoltTrace . TraceEventBatch traceLog = VoltTrace . log ( VoltTrace . Category . SPSITE ) ; if ( traceLog != null ) { traceLog . add ( ( ) -> VoltTrace . beginDuration ( "execplanfragment" , "txnId" , TxnEgo . txnIdToString ( txnId ) , "partition" , Integer . toString ( m_partitionId ) ) ) ; } } FastDeserializer results = coreExecutePlanFragments ( m_currentBatchIndex , numFragmentIds , planFragmentIds , inputDepIds , parameterSets , determinismHash , isWriteFrags , sqlCRCs , txnId , spHandle , lastCommittedSpHandle , uniqueId , undoQuantumToken , traceOn ) ; if ( traceOn ) { final VoltTrace . TraceEventBatch traceLog = VoltTrace . log ( VoltTrace . Category . SPSITE ) ; if ( traceLog != null ) { traceLog . add ( VoltTrace :: endDuration ) ; } } m_plannerStats . updateEECacheStats ( m_eeCacheSize , numFragmentIds - m_cacheMisses , m_cacheMisses , m_partitionId ) ; return results ; } finally { // don't count any cache misses when there's an exception. This is a lie and they // will still be used to estimate the cache size, but it's hard to count cache hits // during an exception, so we don't count cache misses either to get the right ratio. m_cacheMisses = 0 ; m_sqlTexts = null ; m_fragmentContext = FragmentContext . UNKNOWN ; } }
Run multiple plan fragments