public List <string> execute(string idx_field_name) { List <string> rtn_idx = receiver.get_index(idx_field_name); if (rtn_idx == null) { //CommandInvoker invoker = new CommandInvoker(svd); CreateIndexCommand cmd = new CreateIndexCommand(receiver, idx_field_name); invoker.add_command(cmd); invoker.execute_commands_and_iterate(); rtn_idx = receiver.get_index(idx_field_name); } // By now this should either be set from the cache value // or recalculated. if (rtn_idx != null) { return(rtn_idx); } else { // throw exception return(null); } }// execute
public override IASTNode VisitCreateIndex(SqlServerCommandParser.CreateIndexContext context) { CreateIndexCommand result = new CreateIndexCommand(); result.Table = (SimpleTableSegment)Visit(context.tableName()); result.Index = (IndexSegment)Visit(context.indexName()); return(result); }
public async Task <bool> CreateIndexAsync <TEntity>() where TEntity : RedisearchSerializable <TEntity>, new() { var database = _redisConnection.GetDatabase(); var createIndexCommand = CreateIndexCommand.Create <TEntity>(); return(await createIndexCommand.ExecuteAsync(database).ConfigureAwait(false)); }
public bool CreateIndex <TEntity>() where TEntity : RedisearchSerializable <TEntity>, new() { var database = _redisConnection.GetDatabase(); var createIndexCommand = CreateIndexCommand.Create <TEntity>(); return(createIndexCommand.Execute(database)); }
public List <string> execute( string idx_field_name, string filter_field_name, string filter_value ) { Field f_idx = receiver.findInDict(idx_field_name); Field f_ftr = receiver.findInDict(filter_field_name); List <string> rtn_idx = receiver.get_index(idx_field_name); if (rtn_idx == null) { //CommandInvoker invoker = new CommandInvoker(receiver); CreateIndexCommand cmd1 = new CreateIndexCommand(receiver, idx_field_name); invoker.add_command(cmd1); CreateFilterCommand cmd2 = new CreateFilterCommand(receiver, filter_field_name, filter_value); invoker.add_command(cmd2); invoker.execute_commands_and_iterate(); rtn_idx = receiver.get_index(idx_field_name); } // By now this should either be set from the cache value // or recalculated. if (rtn_idx != null) { return(rtn_idx); } else { return(null); // throw exception } }
/// <summary> /// 新建索引。 /// </summary> /// <param name="command">当前命令。</param> /// <param name="builder">SQL语句构建实例。</param> protected override void Generate(CreateIndexCommand command, IndentedStringBuilder builder) { base.Generate(command, builder); if (command.IsUnique && command.IsCustered != true) { builder.Append(" WHERE "); for (var i = 0; i < command.Columns.Length; i++) { if (i != 0) { builder.Append(" AND "); } builder .Append(Sql.DelimitIdentifier(command.Columns[i])) .Append(" IS NOT NULL"); } } }
/// <summary> /// 新建索引。 /// </summary> /// <param name="command">当前命令。</param> /// <param name="builder">SQL语句构建实例。</param> protected virtual void Generate(CreateIndexCommand command, IndentedStringBuilder builder) { Check.NotNull(command, nameof(command)); Check.NotNull(builder, nameof(builder)); builder.Append("CREATE "); if (command.IsUnique) { builder.Append("UNIQUE "); } IndexTraits(command, builder); builder .Append("INDEX ") .Append(Sql.DelimitIdentifier(Prefix(command.Name))) .Append(" ON ") .Append(Sql.DelimitIdentifier(Prefix(command.Table), command.Schema)) .Append(" (") .Append(ColumnList(command.Columns)) .Append(")"); }
public object executeCommand(string strSql) { object objReturn = null; if (_logSql) System.IO.File.AppendAllText (_database.strLogLoc, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + ": " + strSql + System.Environment.NewLine); strSql = strSql.RemoveNewlines(" ").BacktickQuotes(); // TODO: WHOA! Super kludge for single quote escapes. See "Grave accent" in idiosyncracies. // Sorry, I got tired of forgetting this. //if (!strSql.Trim().EndsWith(";")) //{ // throw new Exception("Unterminated command."); //} // TODO: This is assuming a single command. Add splits by semi-colon. strSql = strSql.TrimEnd(';'); string[] astrCmdTokens = strSql.StringToNonWhitespaceTokens2(); // TODO: We're almost always immediately doing this again in the executeStatements. // TODO: Want to ISqlCommand this stuff -- we need to have execute // methods that don't take strings but "command tokens". switch (astrCmdTokens[0].ToLower()) { case "insert": _insertCommand = new InsertCommand(_database); // TODO: This is too much repeat instantiation. Rethink that. objReturn = _insertCommand.executeInsert(strSql); break; case "select": if (strSql.ToLower().StartsWith("select max(")) { SelectMaxCommand selectMaxCmd = new SelectMaxCommand(_database); objReturn = selectMaxCmd.executeStatement(strSql); } else { _selectCommand = new SelectCommand(_database); objReturn = _selectCommand.executeStatement(strSql); } break; case "delete": _deleteCommand = new DeleteCommand(_database); _deleteCommand.executeStatement(strSql); objReturn = "DELETE executed."; // TODO: Add ret val of how many rows returned break; case "update": _updateCommand = new UpdateCommand(_database); _updateCommand.executeStatement(strSql); objReturn = "UPDATE executed."; // TODO: Add ret val of how many rows returned break; case "create": switch (astrCmdTokens[1].ToLower()) { case "table": _createTableCommand = new CreateTableCommand(_database); objReturn = _createTableCommand.executeStatement(strSql); break; case "index": CreateIndexCommand createIndexCommand = new CreateIndexCommand(_database); objReturn = createIndexCommand.executeStatement(strSql); break; } break; case "drop": DropTableCommand dropTableCommand = new DropTableCommand(_database); dropTableCommand.executeStatement(strSql); objReturn = @"Table dropped (or, if ""IF EXISTS"" was used, dropped iff found)."; // TODO: These are pretty sorry messages. Have the executeStatement return something more informative. break; default: throw new SyntaxException("Syntax error: Unhandled command type."); } return objReturn; }
public object executeCommand(string strSql) { object objReturn = null; if (_logSql) { System.IO.File.AppendAllText(_database.strLogLoc, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + ": " + strSql + System.Environment.NewLine); } strSql = strSql.RemoveNewlines(" ").BacktickQuotes(); // TODO: WHOA! Super kludge for single quote escapes. See "Grave accent" in idiosyncracies. // Sorry, I got tired of forgetting this. //if (!strSql.Trim().EndsWith(";")) //{ // throw new Exception("Unterminated command."); //} // TODO: This is assuming a single command. Add splits by semi-colon. strSql = strSql.TrimEnd(';'); string[] astrCmdTokens = strSql.StringToNonWhitespaceTokens2(); // TODO: We're almost always immediately doing this again in the executeStatements. // TODO: Want to ISqlCommand this stuff -- we need to have execute // methods that don't take strings but "command tokens". switch (astrCmdTokens[0].ToLower()) { case "insert": _insertCommand = new InsertCommand(_database); // TODO: This is too much repeat instantiation. Rethink that. objReturn = _insertCommand.executeInsert(strSql); break; case "select": if (strSql.ToLower().StartsWith("select max(")) { SelectMaxCommand selectMaxCmd = new SelectMaxCommand(_database); objReturn = selectMaxCmd.executeStatement(strSql); } else { _selectCommand = new SelectCommand(_database); objReturn = _selectCommand.executeStatement(strSql); } break; case "delete": _deleteCommand = new DeleteCommand(_database); _deleteCommand.executeStatement(strSql); objReturn = "DELETE executed."; // TODO: Add ret val of how many rows returned break; case "update": _updateCommand = new UpdateCommand(_database); _updateCommand.executeStatement(strSql); objReturn = "UPDATE executed."; // TODO: Add ret val of how many rows returned break; case "create": switch (astrCmdTokens[1].ToLower()) { case "table": _createTableCommand = new CreateTableCommand(_database); objReturn = _createTableCommand.executeStatement(strSql); break; case "index": CreateIndexCommand createIndexCommand = new CreateIndexCommand(_database); objReturn = createIndexCommand.executeStatement(strSql); break; } break; case "drop": DropTableCommand dropTableCommand = new DropTableCommand(_database); dropTableCommand.executeStatement(strSql); objReturn = @"Table dropped (or, if ""IF EXISTS"" was used, dropped iff found)."; // TODO: These are pretty sorry messages. Have the executeStatement return something more informative. break; default: throw new SyntaxException("Syntax error: Unhandled command type."); } return(objReturn); }