private void execute(int cursor, Object[] parms, bool batch) { ICursor oCur = getCursor(cursor); if (GxContext.isReorganization && oCur is ForEachCursor && GXReorganization.ExecutedBefore(oCur.Id)) { return; } if (!batch) { oCur.createCursor(_ds, _errorHandler); } short[] parmHasValue = oCur.preExecute(cursor, this, _ds); if (Preferences.Instrumented && wmiDataStoreProvider != null) { wmiDataStoreProvider.IncSentencesCount(oCur); wmiDataStoreProvider.BeginExecute(oCur, _ds.Connection); } try { if (!batch) { try { if (parmHasValue != null) { Object[] parmsNew = new Object[parms.Length + parmHasValue.Length]; parmHasValue.CopyTo(parmsNew, 0); parms.CopyTo(parmsNew, parmHasValue.Length); _dataStoreHelper.setParameters(cursor, oCur.getFieldSetter(), parmsNew); } else { _dataStoreHelper.setParameters(cursor, oCur.getFieldSetter(), parms); } } catch (Exception ex) { _ds.CloseConnections(); throw ex; } } GXLogging.Debug(log, "gxObject:" + _dataStoreHelper.GetType() + ", handle '" + _ds.Handle + "' cursorName:" + oCur.Id); oCur.execute(); }finally { oCur.getFieldSetter().RestoreParametersRT(); } _dataStoreHelper.getResults(cursor, oCur.getFieldGetter(), results[cursor]); _dynConstraints = null; if (Preferences.Instrumented) { wmiDataStoreProvider.EndExecute(oCur, _ds.Connection); } dataStoreRequestCount++; }
public int getStatus(int cursorIdx) { ICursor cursor = getCursor(cursorIdx); if (GxContext.isReorganization && cursor is ForEachCursor && GXReorganization.ExecutedBefore(cursor.Id)) { return(Cursor.EOF); } else { return(cursor.getStatus()); } }
public int close(int cursor) { int result = 0; ICursor oCur = getCursor(cursor); ForEachCursor fc = oCur as ForEachCursor; if (GxContext.isReorganization && fc != null && GXReorganization.ExecutedBefore(oCur.Id)) { return(result); } else { dataStoreRequestCount++; result = oCur.close(); if (GxContext.isReorganization && fc != null) { GXReorganization.AddExecutedStatement(oCur.Id); } return(result); } }