diff --git a/src/DBInit.cpp b/src/DBInit.cpp index 470d28fb31..0c9e45ff81 100644 --- a/src/DBInit.cpp +++ b/src/DBInit.cpp @@ -24,14 +24,12 @@ int TxnDBCount = sizeof(TxnDBInit) / sizeof(const char *); const char *AcctTxnDBInit[] = { "CREATE TABLE AccountTransactions ( \ - TransID CHARACTER964) PRIMARY KEY \ + TransID CHARACTER(64) PRIMARY KEY, \ Account CHARACTER(64), \ - LedgerSeq BIGINT UNSIGNED, \ + LedgerSeq BIGINT UNSIGNED \ );", "CREATE INDEX AcctTxindex ON \ - AccountTransactions(Account), \ - AccountTransactions(LedgerSeq), \ - AccountTransactions(TransID);" + AccountTransactions(Account, LedgerSeq, TransID);" }; int AcctTxnDBCount = sizeof(AcctTxnDBInit) / sizeof(const char *); diff --git a/src/LedgerConsensus.cpp b/src/LedgerConsensus.cpp index ea148163e4..fa2ecb1896 100644 --- a/src/LedgerConsensus.cpp +++ b/src/LedgerConsensus.cpp @@ -738,12 +738,12 @@ void LedgerConsensus::accept(SHAMap::pointer set) SerializedTransaction txn(sit); std::vector accts = txn.getAffectedAccounts(); - std::string sql = "INSERT INTO AccountTransactions (TransID,Account,LedgerSeq) VALUES "; + std::string sql = "INSERT INTO AccountTransactions (TransID, Account, LedgerSeq) VALUES "; bool first = true; for (std::vector::iterator it = accts.begin(), end = accts.end(); it != end; ++it) { if (!first) - sql += ", ("; + sql += ", ('"; else { sql += "('"; @@ -752,9 +752,9 @@ void LedgerConsensus::accept(SHAMap::pointer set) sql += txn.getTransactionID().GetHex(); sql += "','"; sql += it->humanAccountID(); - sql += "','"; + sql += "',"; sql += boost::lexical_cast(newLedgerSeq); - sql += "')"; + sql += ")"; } sql += ";"; Log(lsTRACE) << "ActTx: " << sql; diff --git a/src/NetworkOPs.cpp b/src/NetworkOPs.cpp index d2e93f926f..0efcc2b30b 100644 --- a/src/NetworkOPs.cpp +++ b/src/NetworkOPs.cpp @@ -539,8 +539,8 @@ std::vector< std::pair > std::string sql = str(boost::format("SELECT LedgerSeq,TransID FROM AccountTransactions INDEXED BY AcctTxIndex " - " WHERE Account = %s AND LedgerSeq <= %d AND LedgerSeq >= %d ORDER BY LedgerSeq LIMIT 1000") - % account.humanAccountID() % minLedger % maxLedger); + " WHERE Account = '%s' AND LedgerSeq <= '%d' AND LedgerSeq >= '%d' ORDER BY LedgerSeq LIMIT 1000") + % account.humanAccountID() % maxLedger % minLedger); Database *db = theApp->getAcctTxnDB()->getDB(); ScopedLock dbLock = theApp->getAcctTxnDB()->getDBLock(); diff --git a/src/RPCServer.cpp b/src/RPCServer.cpp index d674254985..3320ace8c3 100644 --- a/src/RPCServer.cpp +++ b/src/RPCServer.cpp @@ -1502,19 +1502,17 @@ Json::Value RPCServer::doAccountTransactions(Json::Value& params) try { #endif - std::vector< std::pair > txns = - mNetOps->getAffectedAccounts(account, minLedger, maxLedger); + std::vector< std::pair > txns = mNetOps->getAffectedAccounts(account, minLedger, maxLedger); Json::Value ret(Json::objectValue); ret["Account"] = account.humanAccountID(); Json::Value ledgers(Json::arrayValue); uint32 currentLedger = 0; Json::Value ledger, jtxns; - for (std::vector< std::pair >::iterator it = txns.begin(), - end = txns.end(); it != end; ++it) + for (std::vector< std::pair >::iterator it = txns.begin(), end = txns.end(); it != end; ++it) { - if (it->first != currentLedger) - { // new ledger + if (it->first != currentLedger) // different/new ledger + { if (currentLedger != 0) // add old ledger { ledger["Transactions"] = jtxns;