public KeyRecordEnumerator Select(Statement stmt, bool metaOnly, params Qualifier[] qualifiers) { KeyRecordEnumerator results = null; /* * no filters */ if (qualifiers == null || qualifiers.Length == 0) { RecordSet recordSet = this.client.Query(null, stmt); results = new KeyRecordEnumerator(stmt.Namespace, recordSet); return results; } /* * singleton using primary key */ if (qualifiers != null && qualifiers.Length == 1 && qualifiers[0] is KeyQualifier) { KeyQualifier kq = (KeyQualifier)qualifiers[0]; Key key = kq.MakeKey(stmt.Namespace, stmt.SetName); //System.out.println(key); Record record = null; if (metaOnly) record = this.client.GetHeader(null, key); else record = this.client.Get(null, key, stmt.BinNames); if (record == null){ results = new KeyRecordEnumerator(stmt.Namespace); } else { KeyRecord keyRecord = new KeyRecord(key, record); results = new KeyRecordEnumerator(stmt.Namespace, keyRecord); } return results; } /* * query with filters */ Dictionary<String, Object> originArgs = new Dictionary<String, Object>(); originArgs["includeAllFields"] = 1; for (int i = 0; i < qualifiers.Length; i++){ Qualifier qualifier = qualifiers[i]; if (isIndexedBin(qualifier)){ Filter filter = qualifier.AsFilter(); if (filter != null){ stmt.Filters = new Filter[] { filter }; qualifiers[i] = null; break; } } } String filterFuncStr = buildFilterFunction(qualifiers); originArgs["filterFuncStr"] = filterFuncStr; Value argValue = Value.Get (originArgs); String fnName = ""; if (metaOnly) fnName = "query_meta"; else fnName = "select_records"; stmt.SetAggregateFunction( Assembly.GetExecutingAssembly(), "Aerospike.Helper.udf."+ QUERY_MODULE + ".lua", QUERY_MODULE, fnName, argValue); ResultSet resultSet = this.client.QueryAggregate(null, stmt); results = new KeyRecordEnumerator(stmt.Namespace, resultSet); return results; }
private IDictionary<String, long> Update(KeyRecordEnumerator results, List<Bin> bins) { long readCount = 0; long updateCount = 0; while (results.MoveNext()){ KeyRecord keyRecord = (KeyRecord) results.Current; readCount++; WritePolicy up = new WritePolicy(updatePolicy); up.generation = keyRecord.record.generation; try { client.Put(up, keyRecord.key, bins.ToArray()); updateCount++; } catch (AerospikeException e){ log.Error("Unexpected exception "+ keyRecord.key, e); } } IDictionary<String, long> map = new Dictionary<String, long>(); map["read"] = readCount; map["write"] = updateCount; return map; }
public KeyRecordEnumerator Select(Statement stmt, IDictionary<String, String> sortMap, params Qualifier[] qualifiers) { KeyRecordEnumerator results = null; if (qualifiers != null && qualifiers.Length > 0) { IDictionary<String, Object> originArgs = new Dictionary<String, Object>(); originArgs["includeAllFields"] = 1; string filterFuncStr = buildFilterFunction(qualifiers); originArgs["filterFuncStr"] = filterFuncStr; string sortFuncStr = buildSortFunction(sortMap); originArgs["sortFuncStr"] = sortFuncStr; stmt.SetAggregateFunction(QUERY_MODULE, "select_records", Value.Get(originArgs)); ResultSet resultSet = this.client.QueryAggregate(null, stmt); results = new KeyRecordEnumerator(stmt.Namespace, resultSet); } else { RecordSet recordSet = this.client.Query(null, stmt); results = new KeyRecordEnumerator(stmt.Namespace, recordSet); } return results; }