TRI_vector_pointer_t* TRI_GetCurrentRangesStatementWalkerAql (TRI_aql_statement_walker_t* const walker) { TRI_aql_scope_t* scope = TRI_GetCurrentScopeStatementWalkerAql(walker); assert(scope); return scope->_ranges; }
void TRI_IgnoreCurrentLimitStatementWalkerAql (TRI_aql_statement_walker_t* const walker) { TRI_aql_scope_t* scope = TRI_GetCurrentScopeStatementWalkerAql(walker); assert(scope); if (scope->_limit._status == TRI_AQL_LIMIT_UNDEFINED) { scope->_limit._status = TRI_AQL_LIMIT_IGNORE; LOG_TRACE("setting limit status to ignorable"); } }
void TRI_RestrictCurrentLimitStatementWalkerAql (TRI_aql_statement_walker_t* const walker) { TRI_aql_scope_t* scope = TRI_GetCurrentScopeStatementWalkerAql(walker); assert(scope); if (scope->_limit._hasFilter) { scope->_limit._status = TRI_AQL_LIMIT_IGNORE; LOG_TRACE("limit given up because of additional filter"); } else if (scope->_limit._status == TRI_AQL_LIMIT_UNDEFINED) { scope->_limit._hasFilter = true; LOG_TRACE("setting limit status to use-in-for-loop"); } }
void TRI_SetCurrentLimitStatementWalkerAql (TRI_aql_statement_walker_t* const walker, const int64_t offset, const int64_t limit) { TRI_aql_scope_t* scope = TRI_GetCurrentScopeStatementWalkerAql(walker); assert(scope); if (scope->_limit._status == TRI_AQL_LIMIT_UNDEFINED) { // never overwrite a previously picked up limit scope->_limit._limit = limit; scope->_limit._offset = offset; scope->_limit._status = TRI_AQL_LIMIT_USE; } }
void TRI_SetCurrentRangesStatementWalkerAql (TRI_aql_statement_walker_t* const walker, TRI_vector_pointer_t* ranges) { TRI_aql_scope_t* scope = TRI_GetCurrentScopeStatementWalkerAql(walker); assert(scope); if (ranges != NULL) { // ranges may be NULL TRI_vector_pointer_t* oldRanges = scope->_ranges; if (oldRanges != NULL) { // free old value TRI_FreeAccessesAql(oldRanges); } // set to new value scope->_ranges = ranges; } }