public void Prepared_SelectOne() { var tableName = TestUtils.GetUniqueTableName(); try { QueryTools.ExecuteSyncNonQuery(Session, string.Format(@" CREATE TABLE {0}( tweet_id int PRIMARY KEY, numb double, label text);", tableName)); TestUtils.WaitForSchemaAgreement(Session.Cluster); } catch (AlreadyExistsException) { } for (int i = 0; i < 10; i++) { Session.Execute(string.Format("INSERT INTO {0} (tweet_id, numb, label) VALUES({1}, 0.01,'{2}')", tableName, i, "row" + i)); } var prepSelect = QueryTools.PrepareQuery(Session, string.Format("SELECT * FROM {0} WHERE tweet_id = ?;", tableName)); var rowId = 5; var result = QueryTools.ExecutePreparedSelectQuery(Session, prepSelect, new object[] { rowId }); foreach (var row in result) { Assert.True((string)row.GetValue(typeof(int), "label") == "row" + rowId); } Assert.True(result.Columns != null); Assert.True(result.Columns.Length == 3); }
public void massivePreparedStatementTest() { string tableName = "table" + Guid.NewGuid().ToString("N"); try { Session.WaitForSchemaAgreement( QueryTools.ExecuteSyncNonQuery(Session, string.Format(@"CREATE TABLE {0}( tweet_id uuid PRIMARY KEY, numb1 double, numb2 int );", tableName)) ); } catch (AlreadyExistsException) { } int numberOfPrepares = 100; var values = new List <object[]>(numberOfPrepares); var prepares = new List <PreparedStatement>(); Parallel.For(0, numberOfPrepares, i => { PreparedStatement prep = QueryTools.PrepareQuery(Session, string.Format("INSERT INTO {0}(tweet_id, numb1, numb2) VALUES ({1}, ?, ?);", tableName, Guid.NewGuid())); lock (prepares) prepares.Add(prep); }); Parallel.ForEach(prepares, prep => { QueryTools.ExecutePreparedQuery(Session, prep, new object[] { (double)Randomm.RandomVal(typeof(double)), (int)Randomm.RandomVal(typeof(int)) }); }); QueryTools.ExecuteSyncQuery(Session, string.Format("SELECT * FROM {0};", tableName), Session.Cluster.Configuration.QueryOptions.GetConsistencyLevel()); }
public void InsertingSingleValuePrepared(Type tp, object value = null) { string cassandraDataTypeName = QueryTools.convertTypeNameToCassandraEquivalent(tp); string tableName = "table" + Guid.NewGuid().ToString("N"); Session.WaitForSchemaAgreement( QueryTools.ExecuteSyncNonQuery(Session, string.Format(@"CREATE TABLE {0}( tweet_id uuid PRIMARY KEY, value {1} );", tableName, cassandraDataTypeName)) ); var toInsert = new List <object[]>(1); object val = Randomm.RandomVal(tp); if (tp == typeof(string)) { val = "'" + val.ToString().Replace("'", "''") + "'"; } var row1 = new object[2] { Guid.NewGuid(), val }; toInsert.Add(row1); PreparedStatement prep = QueryTools.PrepareQuery(Session, string.Format("INSERT INTO {0}(tweet_id, value) VALUES ({1}, ?);", tableName, toInsert[0][0])); if (value == null) { QueryTools.ExecutePreparedQuery(Session, prep, new object[] { toInsert[0][1] }); } else { QueryTools.ExecutePreparedQuery(Session, prep, new object[] { value }); } QueryTools.ExecuteSyncQuery(Session, string.Format("SELECT * FROM {0};", tableName), ConsistencyLevel.One, toInsert); QueryTools.ExecuteSyncNonQuery(Session, string.Format("DROP TABLE {0};", tableName)); }
public void PreparedSelectOneTest() { string tableName = "table" + Guid.NewGuid().ToString("N"); try { Session.WaitForSchemaAgreement( QueryTools.ExecuteSyncNonQuery(Session, string.Format(@" CREATE TABLE {0}( tweet_id int PRIMARY KEY, numb double, label text);", tableName)) ); } catch (AlreadyExistsException) { } for (int i = 0; i < 10; i++) { Session.Execute(string.Format("INSERT INTO {0} (tweet_id, numb, label) VALUES({1}, 0.01,'{2}')", tableName, i, "row" + i)); } PreparedStatement prep_select = QueryTools.PrepareQuery(Session, string.Format("SELECT * FROM {0} WHERE tweet_id = ?;", tableName)); int rowID = 5; var result = QueryTools.ExecutePreparedSelectQuery(Session, prep_select, new object[1] { rowID }); foreach (var row in result) { Assert.True((string)row.GetValue(typeof(int), "label") == "row" + rowID); } Assert.True(result.Columns != null); Assert.True(result.Columns.Length == 3); QueryTools.ExecuteSyncNonQuery(Session, string.Format("DROP TABLE {0};", tableName)); }
public void insertingSingleCollectionPrepared(string CassandraCollectionType, Type TypeOfDataToBeInputed, Type TypeOfKeyForMap = null) { string cassandraDataTypeName = QueryTools.convertTypeNameToCassandraEquivalent(TypeOfDataToBeInputed); string cassandraKeyDataTypeName = ""; string mapSyntax = ""; object valueCollection = null; int Cnt = 10; if (CassandraCollectionType == "list" || CassandraCollectionType == "set") { Type openType = CassandraCollectionType == "list" ? typeof(List <>) : typeof(HashSet <>); Type listType = openType.MakeGenericType(TypeOfDataToBeInputed); valueCollection = Activator.CreateInstance(listType); MethodInfo addM = listType.GetMethod("Add"); for (int i = 0; i < Cnt; i++) { object randomValue = Randomm.RandomVal(TypeOfDataToBeInputed); addM.Invoke(valueCollection, new[] { randomValue }); } } else if (CassandraCollectionType == "map") { cassandraKeyDataTypeName = QueryTools.convertTypeNameToCassandraEquivalent(TypeOfKeyForMap); mapSyntax = cassandraKeyDataTypeName + ","; Type openType = typeof(SortedDictionary <,>); Type dicType = openType.MakeGenericType(TypeOfKeyForMap, TypeOfDataToBeInputed); valueCollection = Activator.CreateInstance(dicType); MethodInfo addM = dicType.GetMethod("Add"); for (int i = 0; i < Cnt; i++) { RETRY: try { object randomKey = Randomm.RandomVal(TypeOfKeyForMap); object randomValue = Randomm.RandomVal(TypeOfDataToBeInputed); addM.Invoke(valueCollection, new[] { randomKey, randomValue }); } catch { goto RETRY; } } } string tableName = "table" + Guid.NewGuid().ToString("N").ToLower(); try { Session.WaitForSchemaAgreement( QueryTools.ExecuteSyncNonQuery(Session, string.Format(@"CREATE TABLE {0}( tweet_id uuid PRIMARY KEY, some_collection {1}<{2}{3}> );", tableName, CassandraCollectionType, mapSyntax, cassandraDataTypeName)) ); } catch (AlreadyExistsException) { } Guid tweet_id = Guid.NewGuid(); PreparedStatement prepInsert = QueryTools.PrepareQuery(Session, string.Format("INSERT INTO {0}(tweet_id,some_collection) VALUES (?, ?);", tableName)); Session.Execute(prepInsert.Bind(tweet_id, valueCollection).SetConsistencyLevel(ConsistencyLevel.Quorum)); QueryTools.ExecuteSyncQuery(Session, string.Format("SELECT * FROM {0};", tableName), Session.Cluster.Configuration.QueryOptions.GetConsistencyLevel()); QueryTools.ExecuteSyncNonQuery(Session, string.Format("DROP TABLE {0};", tableName)); }