anchor.diff:  create_index(_, _) ->
     none.
   
  -execute(Query, Args, #state{pool=Pool}) when is_list(Query), is_list(Args) ->
  -  ok = emysql:prepare(stmt, iolist_to_binary(Query)),
  -  lager:debug("Query: ~s ->  ~p ~n", [Query, Args]),
  -  emysql:execute(Pool, stmt, Args).
  -
  -execute(Query, State) ->
  -  execute(Query, [], State).
  +execute(PreName, Args, #state{pool=Pool}) when is_atom(PreName), is_list(Args) ->
  +  Name = list_to_atom(atom_to_list(PreName) ++ "_stmt"),
  +  lager:debug("Prepared Query: ~s -> ~p", [Name, Args]),
  +  emysql:execute(Pool, Name, Args).
  +
  +execute(Name, State) when is_atom(Name) ->
  +  execute(Name, [], State);
  +
  +execute(PreQuery, #state{pool=Pool}) when is_list(PreQuery)->
  +  Query = iolist_to_binary(PreQuery),
  +  lager:debug("Query: ~s", [Query]),
  +  emysql:execute(Pool, Query).
  +
  +prepare(PreName, PreQuery) ->
  +  Query = iolist_to_binary(PreQuery),
  +  Name = list_to_atom(atom_to_list(PreName) ++ "_stmt"),
  +  lager:debug("Preparing query: ~p: ~p", [Name, Query]),
  +  ok = emysql:prepare(Name, Query).
   
   %% @doc We can extend this to wrap around emysql records, so they don't end up
   %% leaking details in all the repo.
  
positive.code:       ColumnDqls
      ), ",")
    ],
    emysql:prepare(insert_stmt, list_to_binary(Dql)),
    case execute(Dql, lists:append(ColumnValues, ColumnValues), State) of
      #ok_packet{insert_id = InsertId} ->
        % XXX TODO darle una vuelta mas de rosca
        % para el manejo general de cuando te devuelve el primary key
  
negative.code:       _ ->
          [Sql1, " LIMIT ", integer_to_list(Offset), ",", integer_to_list(Limit)]
      end,
    prepare(find_all, Sql2),
    case execute(find_all, State) of
      #result_packet{rows = Rows, field_list = Fields} ->
        Docs   = lists:foldl(
          fun(Row, DocList) ->
  