mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
Remove obsolete code
This commit is contained in:
@@ -1426,14 +1426,6 @@
|
|||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClInclude Include="..\..\src\ripple\app\consensus\LedgerConsensus.h">
|
<ClInclude Include="..\..\src\ripple\app\consensus\LedgerConsensus.h">
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClCompile Include="..\..\src\ripple\app\data\Database.cpp">
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
|
|
||||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='debug.classic|x64'">..\..\src\soci\src\core;..\..\src\sqlite;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='release.classic|x64'">..\..\src\soci\src\core;..\..\src\sqlite;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
</ClCompile>
|
|
||||||
<ClInclude Include="..\..\src\ripple\app\data\Database.h">
|
|
||||||
</ClInclude>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\data\DatabaseCon.cpp">
|
<ClCompile Include="..\..\src\ripple\app\data\DatabaseCon.cpp">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
|
||||||
@@ -1464,14 +1456,6 @@
|
|||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClInclude Include="..\..\src\ripple\app\data\SociDB.h">
|
<ClInclude Include="..\..\src\ripple\app\data\SociDB.h">
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClCompile Include="..\..\src\ripple\app\data\SqliteDatabase.cpp">
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
|
|
||||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='debug.classic|x64'">..\..\src\soci\src\core;..\..\src\sqlite;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='release.classic|x64'">..\..\src\soci\src\core;..\..\src\sqlite;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
</ClCompile>
|
|
||||||
<ClInclude Include="..\..\src\ripple\app\data\SqliteDatabase.h">
|
|
||||||
</ClInclude>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\data\tests\SociDB.test.cpp">
|
<ClCompile Include="..\..\src\ripple\app\data\tests\SociDB.test.cpp">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug|x64'">True</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release|x64'">True</ExcludedFromBuild>
|
||||||
|
|||||||
@@ -2160,12 +2160,6 @@
|
|||||||
<ClInclude Include="..\..\src\ripple\app\consensus\LedgerConsensus.h">
|
<ClInclude Include="..\..\src\ripple\app\consensus\LedgerConsensus.h">
|
||||||
<Filter>ripple\app\consensus</Filter>
|
<Filter>ripple\app\consensus</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClCompile Include="..\..\src\ripple\app\data\Database.cpp">
|
|
||||||
<Filter>ripple\app\data</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClInclude Include="..\..\src\ripple\app\data\Database.h">
|
|
||||||
<Filter>ripple\app\data</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\data\DatabaseCon.cpp">
|
<ClCompile Include="..\..\src\ripple\app\data\DatabaseCon.cpp">
|
||||||
<Filter>ripple\app\data</Filter>
|
<Filter>ripple\app\data</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -2187,12 +2181,6 @@
|
|||||||
<ClInclude Include="..\..\src\ripple\app\data\SociDB.h">
|
<ClInclude Include="..\..\src\ripple\app\data\SociDB.h">
|
||||||
<Filter>ripple\app\data</Filter>
|
<Filter>ripple\app\data</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClCompile Include="..\..\src\ripple\app\data\SqliteDatabase.cpp">
|
|
||||||
<Filter>ripple\app\data</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClInclude Include="..\..\src\ripple\app\data\SqliteDatabase.h">
|
|
||||||
<Filter>ripple\app\data</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\data\tests\SociDB.test.cpp">
|
<ClCompile Include="..\..\src\ripple\app\data\tests\SociDB.test.cpp">
|
||||||
<Filter>ripple\app\data\tests</Filter>
|
<Filter>ripple\app\data\tests</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|||||||
@@ -1,213 +0,0 @@
|
|||||||
//------------------------------------------------------------------------------
|
|
||||||
/*
|
|
||||||
This file is part of rippled: https://github.com/ripple/rippled
|
|
||||||
Copyright (c) 2012, 2013 Ripple Labs Inc.
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
*/
|
|
||||||
//==============================================================================
|
|
||||||
|
|
||||||
#include <BeastConfig.h>
|
|
||||||
#include <ripple/basics/StringUtilities.h>
|
|
||||||
#include <ripple/app/data/Database.h>
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
namespace ripple {
|
|
||||||
|
|
||||||
Database::Database (const char* host)
|
|
||||||
: mNumCol (0)
|
|
||||||
{
|
|
||||||
mHost = host;
|
|
||||||
}
|
|
||||||
|
|
||||||
Database::~Database ()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Database::getNull (const char* colName)
|
|
||||||
{
|
|
||||||
int index;
|
|
||||||
|
|
||||||
if (getColNumber (colName, &index))
|
|
||||||
{
|
|
||||||
return getNull (index);
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
char* Database::getStr (const char* colName, std::string& retStr)
|
|
||||||
{
|
|
||||||
int index;
|
|
||||||
|
|
||||||
if (getColNumber (colName, &index))
|
|
||||||
{
|
|
||||||
return getStr (index, retStr);
|
|
||||||
}
|
|
||||||
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::int32_t Database::getInt (const char* colName)
|
|
||||||
{
|
|
||||||
int index;
|
|
||||||
|
|
||||||
if (getColNumber (colName, &index))
|
|
||||||
{
|
|
||||||
return getInt (index);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
float Database::getFloat (const char* colName)
|
|
||||||
{
|
|
||||||
int index;
|
|
||||||
|
|
||||||
if (getColNumber (colName, &index))
|
|
||||||
{
|
|
||||||
return getFloat (index);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Database::getBool (const char* colName)
|
|
||||||
{
|
|
||||||
int index;
|
|
||||||
|
|
||||||
if (getColNumber (colName, &index))
|
|
||||||
{
|
|
||||||
return getBool (index);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int Database::getBinary (const char* colName, unsigned char* buf, int maxSize)
|
|
||||||
{
|
|
||||||
int index;
|
|
||||||
|
|
||||||
if (getColNumber (colName, &index))
|
|
||||||
{
|
|
||||||
return (getBinary (index, buf, maxSize));
|
|
||||||
}
|
|
||||||
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
|
|
||||||
Blob Database::getBinary (std::string const& strColName)
|
|
||||||
{
|
|
||||||
int index;
|
|
||||||
|
|
||||||
if (getColNumber (strColName.c_str (), &index))
|
|
||||||
{
|
|
||||||
return getBinary (index);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Blob ();
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string Database::getStrBinary (std::string const& strColName)
|
|
||||||
{
|
|
||||||
// YYY Could eliminate a copy if getStrBinary was a template.
|
|
||||||
return strCopy (getBinary (strColName.c_str ()));
|
|
||||||
}
|
|
||||||
|
|
||||||
std::uint64_t Database::getBigInt (const char* colName)
|
|
||||||
{
|
|
||||||
int index;
|
|
||||||
|
|
||||||
if (getColNumber (colName, &index))
|
|
||||||
{
|
|
||||||
return getBigInt (index);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// returns false if can't find col
|
|
||||||
bool Database::getColNumber (const char* colName, int* retIndex)
|
|
||||||
{
|
|
||||||
for (unsigned int n = 0; n < mColNameTable.size (); n++)
|
|
||||||
{
|
|
||||||
if (strcmp (colName, mColNameTable[n].c_str ()) == 0)
|
|
||||||
{
|
|
||||||
*retIndex = n;
|
|
||||||
return (true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
int Database::getSingleDBValueInt (const char* sql)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
if ( executeSQL (sql) && startIterRows ()
|
|
||||||
{
|
|
||||||
ret = getInt (0);
|
|
||||||
endIterRows ();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//theUI->statusMsg("ERROR with database: %s",sql);
|
|
||||||
ret = 0;
|
|
||||||
}
|
|
||||||
return (ret);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
float Database::getSingleDBValueFloat (const char* sql)
|
|
||||||
{
|
|
||||||
float ret;
|
|
||||||
|
|
||||||
if (executeSQL (sql) && startIterRows () && getNextRow ())
|
|
||||||
{
|
|
||||||
ret = getFloat (0);
|
|
||||||
endIterRows ();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//theUI->statusMsg("ERROR with database: %s",sql);
|
|
||||||
ret = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (ret);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
char* Database::getSingleDBValueStr (const char* sql, std::string& retStr)
|
|
||||||
{
|
|
||||||
char* ret;
|
|
||||||
|
|
||||||
if (executeSQL (sql) && startIterRows ())
|
|
||||||
{
|
|
||||||
ret = getStr (0, retStr);
|
|
||||||
endIterRows ();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//theUI->statusMsg("ERROR with database: %s",sql);
|
|
||||||
ret = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (ret);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
} // ripple
|
|
||||||
@@ -1,128 +0,0 @@
|
|||||||
//------------------------------------------------------------------------------
|
|
||||||
/*
|
|
||||||
This file is part of rippled: https://github.com/ripple/rippled
|
|
||||||
Copyright (c) 2012, 2013 Ripple Labs Inc.
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
*/
|
|
||||||
//==============================================================================
|
|
||||||
|
|
||||||
#ifndef RIPPLE_APP_DATA_DATABASE_H_INCLUDED
|
|
||||||
#define RIPPLE_APP_DATA_DATABASE_H_INCLUDED
|
|
||||||
|
|
||||||
#include <ripple/basics/Blob.h>
|
|
||||||
#include <cstdint>
|
|
||||||
#include <string>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
namespace ripple {
|
|
||||||
|
|
||||||
// VFALCO Get rid of these macros
|
|
||||||
//
|
|
||||||
#define SQL_FOREACH(_db, _strQuery) \
|
|
||||||
if ((_db)->executeSQL(_strQuery)) \
|
|
||||||
for (bool _bMore = (_db)->startIterRows(); _bMore; _bMore = (_db)->getNextRow())
|
|
||||||
|
|
||||||
#define SQL_EXISTS(_db, _strQuery) \
|
|
||||||
((_db)->executeSQL(_strQuery) && (_db)->startIterRows())
|
|
||||||
|
|
||||||
/*
|
|
||||||
this maintains the connection to the database
|
|
||||||
*/
|
|
||||||
|
|
||||||
class SqliteDatabase;
|
|
||||||
class JobQueue;
|
|
||||||
|
|
||||||
class Database
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
explicit Database (const char* host);
|
|
||||||
|
|
||||||
virtual ~Database ();
|
|
||||||
|
|
||||||
virtual void connect () = 0;
|
|
||||||
|
|
||||||
virtual void disconnect () = 0;
|
|
||||||
|
|
||||||
// returns true if the query went ok
|
|
||||||
virtual bool executeSQL (const char* sql, bool fail_okay = false) = 0;
|
|
||||||
|
|
||||||
bool executeSQL (std::string strSql, bool fail_okay = false)
|
|
||||||
{
|
|
||||||
return executeSQL (strSql.c_str (), fail_okay);
|
|
||||||
}
|
|
||||||
|
|
||||||
// returns false if there are no results
|
|
||||||
virtual bool startIterRows (bool finalize = true) = 0;
|
|
||||||
virtual void endIterRows () = 0;
|
|
||||||
|
|
||||||
// call this after you executeSQL
|
|
||||||
// will return false if there are no more rows
|
|
||||||
virtual bool getNextRow (bool finalize = true) = 0;
|
|
||||||
|
|
||||||
// get Data from the current row
|
|
||||||
bool getNull (const char* colName);
|
|
||||||
char* getStr (const char* colName, std::string& retStr);
|
|
||||||
std::string getStrBinary (std::string const& strColName);
|
|
||||||
std::int32_t getInt (const char* colName);
|
|
||||||
float getFloat (const char* colName);
|
|
||||||
bool getBool (const char* colName);
|
|
||||||
|
|
||||||
// returns amount stored in buf
|
|
||||||
int getBinary (const char* colName, unsigned char* buf, int maxSize);
|
|
||||||
Blob getBinary (std::string const& strColName);
|
|
||||||
|
|
||||||
std::uint64_t getBigInt (const char* colName);
|
|
||||||
|
|
||||||
virtual bool getNull (int colIndex) = 0;
|
|
||||||
virtual char* getStr (int colIndex, std::string& retStr) = 0;
|
|
||||||
virtual std::int32_t getInt (int colIndex) = 0;
|
|
||||||
virtual float getFloat (int colIndex) = 0;
|
|
||||||
virtual bool getBool (int colIndex) = 0;
|
|
||||||
virtual int getBinary (int colIndex, unsigned char* buf, int maxSize) = 0;
|
|
||||||
virtual std::uint64_t getBigInt (int colIndex) = 0;
|
|
||||||
virtual Blob getBinary (int colIndex) = 0;
|
|
||||||
|
|
||||||
// int getSingleDBValueInt(const char* sql);
|
|
||||||
// float getSingleDBValueFloat(const char* sql);
|
|
||||||
// char* getSingleDBValueStr(const char* sql, std::string& retStr);
|
|
||||||
|
|
||||||
// VFALCO TODO Make this parameter a reference instead of a pointer.
|
|
||||||
virtual bool setupCheckpointing (JobQueue*)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
virtual SqliteDatabase* getSqliteDB ()
|
|
||||||
{
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
virtual int getKBUsedAll ()
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
virtual int getKBUsedDB ()
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected:
|
|
||||||
bool getColNumber (const char* colName, int* retIndex);
|
|
||||||
|
|
||||||
int mNumCol;
|
|
||||||
std::string mHost;
|
|
||||||
std::vector <std::string> mColNameTable;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // ripple
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,461 +0,0 @@
|
|||||||
//------------------------------------------------------------------------------
|
|
||||||
/*
|
|
||||||
This file is part of rippled: https://github.com/ripple/rippled
|
|
||||||
Copyright (c) 2012, 2013 Ripple Labs Inc.
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
*/
|
|
||||||
//==============================================================================
|
|
||||||
|
|
||||||
#include <BeastConfig.h>
|
|
||||||
#include <ripple/app/data/SqliteDatabase.h>
|
|
||||||
#include <ripple/core/JobQueue.h>
|
|
||||||
#include <ripple/basics/Log.h>
|
|
||||||
|
|
||||||
namespace ripple {
|
|
||||||
|
|
||||||
SqliteStatement::SqliteStatement (SqliteDatabase* db, const char* sql)
|
|
||||||
{
|
|
||||||
assert (db);
|
|
||||||
|
|
||||||
sqlite3* conn = db->peekConnection ();
|
|
||||||
int j = sqlite3_prepare_v2 (conn, sql, strlen (sql) + 1, &statement, nullptr);
|
|
||||||
|
|
||||||
if (j != SQLITE_OK)
|
|
||||||
throw j;
|
|
||||||
}
|
|
||||||
|
|
||||||
SqliteStatement::SqliteStatement (SqliteDatabase* db, std::string const& sql)
|
|
||||||
{
|
|
||||||
assert (db);
|
|
||||||
|
|
||||||
sqlite3* conn = db->peekConnection ();
|
|
||||||
int j = sqlite3_prepare_v2 (conn, sql.c_str (), sql.size () + 1, &statement, nullptr);
|
|
||||||
|
|
||||||
if (j != SQLITE_OK)
|
|
||||||
throw j;
|
|
||||||
}
|
|
||||||
|
|
||||||
SqliteStatement::~SqliteStatement ()
|
|
||||||
{
|
|
||||||
sqlite3_finalize (statement);
|
|
||||||
}
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
SqliteDatabase::SqliteDatabase (const char* host)
|
|
||||||
: Database (host)
|
|
||||||
, Thread ("sqlitedb")
|
|
||||||
, mWalQ (nullptr)
|
|
||||||
, walRunning (false)
|
|
||||||
{
|
|
||||||
startThread ();
|
|
||||||
|
|
||||||
mConnection = nullptr;
|
|
||||||
mCurrentStmt = nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
SqliteDatabase::~SqliteDatabase ()
|
|
||||||
{
|
|
||||||
// Blocks until the thread exits in an orderly fashion
|
|
||||||
stopThread ();
|
|
||||||
}
|
|
||||||
|
|
||||||
void SqliteDatabase::connect ()
|
|
||||||
{
|
|
||||||
int rc = sqlite3_open_v2 (mHost.c_str (), &mConnection,
|
|
||||||
SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_FULLMUTEX, nullptr);
|
|
||||||
|
|
||||||
if (rc)
|
|
||||||
{
|
|
||||||
WriteLog (lsFATAL, SqliteDatabase) << "Can't open " << mHost << " " << rc;
|
|
||||||
sqlite3_close (mConnection);
|
|
||||||
assert ((rc != SQLITE_BUSY) && (rc != SQLITE_LOCKED));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void SqliteDatabase::disconnect ()
|
|
||||||
{
|
|
||||||
sqlite3_finalize (mCurrentStmt);
|
|
||||||
sqlite3_close (mConnection);
|
|
||||||
}
|
|
||||||
|
|
||||||
// returns true if the query went ok
|
|
||||||
bool SqliteDatabase::executeSQL (const char* sql, bool fail_ok)
|
|
||||||
{
|
|
||||||
#ifdef DEBUG_HANGING_LOCKS
|
|
||||||
assert (fail_ok || (mCurrentStmt == nullptr));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
sqlite3_finalize (mCurrentStmt);
|
|
||||||
|
|
||||||
int rc = sqlite3_prepare_v2 (mConnection, sql, -1, &mCurrentStmt, nullptr);
|
|
||||||
|
|
||||||
if (SQLITE_OK != rc)
|
|
||||||
{
|
|
||||||
if (!fail_ok)
|
|
||||||
{
|
|
||||||
#ifdef BEAST_DEBUG
|
|
||||||
WriteLog (lsWARNING, SqliteDatabase) << "Perror:" << mHost << ": " << rc;
|
|
||||||
WriteLog (lsWARNING, SqliteDatabase) << "Statement: " << sql;
|
|
||||||
WriteLog (lsWARNING, SqliteDatabase) << "Error: " << sqlite3_errmsg (mConnection);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
endIterRows ();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
rc = sqlite3_step (mCurrentStmt);
|
|
||||||
|
|
||||||
if (rc == SQLITE_ROW)
|
|
||||||
{
|
|
||||||
mMoreRows = true;
|
|
||||||
}
|
|
||||||
else if (rc == SQLITE_DONE)
|
|
||||||
{
|
|
||||||
endIterRows ();
|
|
||||||
mMoreRows = false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if ((rc != SQLITE_BUSY) && (rc != SQLITE_LOCKED))
|
|
||||||
{
|
|
||||||
WriteLog (lsFATAL, SqliteDatabase) << mHost << " returns error " << rc << ": " << sqlite3_errmsg (mConnection);
|
|
||||||
assert (false);
|
|
||||||
}
|
|
||||||
|
|
||||||
mMoreRows = false;
|
|
||||||
|
|
||||||
if (!fail_ok)
|
|
||||||
{
|
|
||||||
#ifdef BEAST_DEBUG
|
|
||||||
WriteLog (lsWARNING, SqliteDatabase) << "SQL Serror:" << mHost << ": " << rc;
|
|
||||||
WriteLog (lsWARNING, SqliteDatabase) << "Statement: " << sql;
|
|
||||||
WriteLog (lsWARNING, SqliteDatabase) << "Error: " << sqlite3_errmsg (mConnection);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
endIterRows ();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// returns false if there are no results
|
|
||||||
bool SqliteDatabase::startIterRows (bool finalize)
|
|
||||||
{
|
|
||||||
mColNameTable.clear ();
|
|
||||||
mColNameTable.resize (sqlite3_column_count (mCurrentStmt));
|
|
||||||
|
|
||||||
for (unsigned n = 0; n < mColNameTable.size (); n++)
|
|
||||||
{
|
|
||||||
mColNameTable[n] = sqlite3_column_name (mCurrentStmt, n);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!mMoreRows && finalize)
|
|
||||||
endIterRows ();
|
|
||||||
|
|
||||||
return (mMoreRows);
|
|
||||||
}
|
|
||||||
|
|
||||||
void SqliteDatabase::endIterRows ()
|
|
||||||
{
|
|
||||||
sqlite3_finalize (mCurrentStmt);
|
|
||||||
mCurrentStmt = nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
// call this after you executeSQL
|
|
||||||
// will return false if there are no more rows
|
|
||||||
bool SqliteDatabase::getNextRow (bool finalize)
|
|
||||||
{
|
|
||||||
if (mMoreRows)
|
|
||||||
{
|
|
||||||
int rc = sqlite3_step (mCurrentStmt);
|
|
||||||
|
|
||||||
if (rc == SQLITE_ROW)
|
|
||||||
return (true);
|
|
||||||
|
|
||||||
assert ((rc != SQLITE_BUSY) && (rc != SQLITE_LOCKED));
|
|
||||||
CondLog ((rc != SQLITE_DONE), lsWARNING, SqliteDatabase) << "Rerror: " << mHost << ": " << rc;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (finalize)
|
|
||||||
endIterRows ();
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool SqliteDatabase::getNull (int colIndex)
|
|
||||||
{
|
|
||||||
return (SQLITE_NULL == sqlite3_column_type (mCurrentStmt, colIndex));
|
|
||||||
}
|
|
||||||
|
|
||||||
char* SqliteDatabase::getStr (int colIndex, std::string& retStr)
|
|
||||||
{
|
|
||||||
const char* text = reinterpret_cast<const char*> (sqlite3_column_text (mCurrentStmt, colIndex));
|
|
||||||
retStr = (text == nullptr) ? "" : text;
|
|
||||||
return const_cast<char*> (retStr.c_str ());
|
|
||||||
}
|
|
||||||
|
|
||||||
std::int32_t SqliteDatabase::getInt (int colIndex)
|
|
||||||
{
|
|
||||||
return (sqlite3_column_int (mCurrentStmt, colIndex));
|
|
||||||
}
|
|
||||||
|
|
||||||
float SqliteDatabase::getFloat (int colIndex)
|
|
||||||
{
|
|
||||||
return (static_cast <float> (sqlite3_column_double (mCurrentStmt, colIndex)));
|
|
||||||
}
|
|
||||||
|
|
||||||
bool SqliteDatabase::getBool (int colIndex)
|
|
||||||
{
|
|
||||||
return (sqlite3_column_int (mCurrentStmt, colIndex) ? true : false);
|
|
||||||
}
|
|
||||||
|
|
||||||
int SqliteDatabase::getBinary (int colIndex, unsigned char* buf, int maxSize)
|
|
||||||
{
|
|
||||||
const void* blob = sqlite3_column_blob (mCurrentStmt, colIndex);
|
|
||||||
int size = sqlite3_column_bytes (mCurrentStmt, colIndex);
|
|
||||||
|
|
||||||
if (size < maxSize) maxSize = size;
|
|
||||||
|
|
||||||
memcpy (buf, blob, maxSize);
|
|
||||||
return (size);
|
|
||||||
}
|
|
||||||
|
|
||||||
Blob SqliteDatabase::getBinary (int colIndex)
|
|
||||||
{
|
|
||||||
const unsigned char* blob = reinterpret_cast<const unsigned char*> (sqlite3_column_blob (mCurrentStmt, colIndex));
|
|
||||||
size_t iSize = sqlite3_column_bytes (mCurrentStmt, colIndex);
|
|
||||||
Blob vucResult;
|
|
||||||
|
|
||||||
vucResult.resize (iSize);
|
|
||||||
std::copy (blob, blob + iSize, vucResult.begin ());
|
|
||||||
|
|
||||||
return vucResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::uint64_t SqliteDatabase::getBigInt (int colIndex)
|
|
||||||
{
|
|
||||||
return (sqlite3_column_int64 (mCurrentStmt, colIndex));
|
|
||||||
}
|
|
||||||
|
|
||||||
int SqliteDatabase::getKBUsedAll ()
|
|
||||||
{
|
|
||||||
return static_cast<int> (sqlite3_memory_used () / 1024);
|
|
||||||
}
|
|
||||||
|
|
||||||
int SqliteDatabase::getKBUsedDB ()
|
|
||||||
{
|
|
||||||
int cur = 0, hiw = 0;
|
|
||||||
sqlite3_db_status (mConnection, SQLITE_DBSTATUS_CACHE_USED, &cur, &hiw, 0);
|
|
||||||
return cur / 1024;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int SqliteWALHook (void* s, sqlite3* dbCon, const char* dbName, int walSize)
|
|
||||||
{
|
|
||||||
(reinterpret_cast<SqliteDatabase*> (s))->doHook (dbName, walSize);
|
|
||||||
return SQLITE_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool SqliteDatabase::setupCheckpointing (JobQueue* q)
|
|
||||||
{
|
|
||||||
mWalQ = q;
|
|
||||||
sqlite3_wal_hook (mConnection, SqliteWALHook, this);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SqliteDatabase::doHook (const char* db, int pages)
|
|
||||||
{
|
|
||||||
if (pages < 1000)
|
|
||||||
return;
|
|
||||||
|
|
||||||
{
|
|
||||||
ScopedLockType sl (m_walMutex);
|
|
||||||
|
|
||||||
if (walRunning)
|
|
||||||
return;
|
|
||||||
|
|
||||||
walRunning = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mWalQ)
|
|
||||||
{
|
|
||||||
mWalQ->addJob (jtWAL, std::string ("WAL:") + mHost, std::bind (&SqliteDatabase::runWal, this));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
notify();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void SqliteDatabase::run ()
|
|
||||||
{
|
|
||||||
// Simple thread loop runs Wal every time it wakes up via
|
|
||||||
// the call to Thread::notify, unless Thread::threadShouldExit returns
|
|
||||||
// true in which case we simply break.
|
|
||||||
//
|
|
||||||
for (;;)
|
|
||||||
{
|
|
||||||
wait ();
|
|
||||||
if (threadShouldExit())
|
|
||||||
break;
|
|
||||||
runWal();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void SqliteDatabase::runWal ()
|
|
||||||
{
|
|
||||||
int log = 0, ckpt = 0;
|
|
||||||
int ret = sqlite3_wal_checkpoint_v2 (mConnection, nullptr, SQLITE_CHECKPOINT_PASSIVE, &log, &ckpt);
|
|
||||||
|
|
||||||
if (ret != SQLITE_OK)
|
|
||||||
{
|
|
||||||
WriteLog ((ret == SQLITE_LOCKED) ? lsTRACE : lsWARNING, SqliteDatabase) << "WAL("
|
|
||||||
<< sqlite3_db_filename (mConnection, "main") << "): error " << ret;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
WriteLog (lsTRACE, SqliteDatabase) << "WAL(" << sqlite3_db_filename (mConnection, "main") <<
|
|
||||||
"): frames=" << log << ", written=" << ckpt;
|
|
||||||
|
|
||||||
{
|
|
||||||
ScopedLockType sl (m_walMutex);
|
|
||||||
walRunning = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sqlite3_stmt* SqliteStatement::peekStatement ()
|
|
||||||
{
|
|
||||||
return statement;
|
|
||||||
}
|
|
||||||
|
|
||||||
int SqliteStatement::bind (int position, const void* data, int length)
|
|
||||||
{
|
|
||||||
return sqlite3_bind_blob (statement, position, data, length, SQLITE_TRANSIENT);
|
|
||||||
}
|
|
||||||
|
|
||||||
int SqliteStatement::bindStatic (int position, const void* data, int length)
|
|
||||||
{
|
|
||||||
return sqlite3_bind_blob (statement, position, data, length, SQLITE_STATIC);
|
|
||||||
}
|
|
||||||
|
|
||||||
int SqliteStatement::bindStatic (int position, Blob const& value)
|
|
||||||
{
|
|
||||||
return sqlite3_bind_blob (statement, position, &value.front (), value.size (), SQLITE_STATIC);
|
|
||||||
}
|
|
||||||
|
|
||||||
int SqliteStatement::bind (int position, std::uint32_t value)
|
|
||||||
{
|
|
||||||
return sqlite3_bind_int64 (statement, position, static_cast<sqlite3_int64> (value));
|
|
||||||
}
|
|
||||||
|
|
||||||
int SqliteStatement::bind (int position, std::string const& value)
|
|
||||||
{
|
|
||||||
return sqlite3_bind_text (statement, position, value.data (), value.size (), SQLITE_TRANSIENT);
|
|
||||||
}
|
|
||||||
|
|
||||||
int SqliteStatement::bindStatic (int position, std::string const& value)
|
|
||||||
{
|
|
||||||
return sqlite3_bind_text (statement, position, value.data (), value.size (), SQLITE_STATIC);
|
|
||||||
}
|
|
||||||
|
|
||||||
int SqliteStatement::bind (int position)
|
|
||||||
{
|
|
||||||
return sqlite3_bind_null (statement, position);
|
|
||||||
}
|
|
||||||
|
|
||||||
int SqliteStatement::size (int column)
|
|
||||||
{
|
|
||||||
return sqlite3_column_bytes (statement, column);
|
|
||||||
}
|
|
||||||
|
|
||||||
const void* SqliteStatement::peekBlob (int column)
|
|
||||||
{
|
|
||||||
return sqlite3_column_blob (statement, column);
|
|
||||||
}
|
|
||||||
|
|
||||||
Blob SqliteStatement::getBlob (int column)
|
|
||||||
{
|
|
||||||
int size = sqlite3_column_bytes (statement, column);
|
|
||||||
Blob ret (size);
|
|
||||||
memcpy (& (ret.front ()), sqlite3_column_blob (statement, column), size);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string SqliteStatement::getString (int column)
|
|
||||||
{
|
|
||||||
return reinterpret_cast<const char*> (sqlite3_column_text (statement, column));
|
|
||||||
}
|
|
||||||
|
|
||||||
const char* SqliteStatement::peekString (int column)
|
|
||||||
{
|
|
||||||
return reinterpret_cast<const char*> (sqlite3_column_text (statement, column));
|
|
||||||
}
|
|
||||||
|
|
||||||
std::uint32_t SqliteStatement::getUInt32 (int column)
|
|
||||||
{
|
|
||||||
return static_cast<std::uint32_t> (sqlite3_column_int64 (statement, column));
|
|
||||||
}
|
|
||||||
|
|
||||||
std::int64_t SqliteStatement::getInt64 (int column)
|
|
||||||
{
|
|
||||||
return sqlite3_column_int64 (statement, column);
|
|
||||||
}
|
|
||||||
|
|
||||||
int SqliteStatement::step ()
|
|
||||||
{
|
|
||||||
return sqlite3_step (statement);
|
|
||||||
}
|
|
||||||
|
|
||||||
int SqliteStatement::reset ()
|
|
||||||
{
|
|
||||||
return sqlite3_reset (statement);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool SqliteStatement::isOk (int j)
|
|
||||||
{
|
|
||||||
return j == SQLITE_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool SqliteStatement::isDone (int j)
|
|
||||||
{
|
|
||||||
return j == SQLITE_DONE;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool SqliteStatement::isRow (int j)
|
|
||||||
{
|
|
||||||
return j == SQLITE_ROW;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool SqliteStatement::isError (int j)
|
|
||||||
{
|
|
||||||
switch (j)
|
|
||||||
{
|
|
||||||
case SQLITE_OK:
|
|
||||||
case SQLITE_ROW:
|
|
||||||
case SQLITE_DONE:
|
|
||||||
return false;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string SqliteStatement::getError (int j)
|
|
||||||
{
|
|
||||||
return sqlite3_errstr (j);
|
|
||||||
}
|
|
||||||
|
|
||||||
} // ripple
|
|
||||||
@@ -1,152 +0,0 @@
|
|||||||
//------------------------------------------------------------------------------
|
|
||||||
/*
|
|
||||||
This file is part of rippled: https://github.com/ripple/rippled
|
|
||||||
Copyright (c) 2012, 2013 Ripple Labs Inc.
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
*/
|
|
||||||
//==============================================================================
|
|
||||||
|
|
||||||
#ifndef RIPPLE_APP_DATA_SQLITEDATABASE_H_INCLUDED
|
|
||||||
#define RIPPLE_APP_DATA_SQLITEDATABASE_H_INCLUDED
|
|
||||||
|
|
||||||
#include <ripple/app/data/Database.h>
|
|
||||||
#include <ripple/basics/Blob.h>
|
|
||||||
#include <ripple/core/JobQueue.h>
|
|
||||||
#include <sqlite/sqlite.h>
|
|
||||||
#include <beast/threads/Thread.h>
|
|
||||||
#include <mutex>
|
|
||||||
|
|
||||||
namespace ripple {
|
|
||||||
|
|
||||||
class SqliteDatabase
|
|
||||||
: public Database
|
|
||||||
, private beast::Thread
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
explicit SqliteDatabase (char const* host);
|
|
||||||
~SqliteDatabase ();
|
|
||||||
|
|
||||||
void connect ();
|
|
||||||
void disconnect ();
|
|
||||||
|
|
||||||
// returns true if the query went ok
|
|
||||||
bool executeSQL (const char* sql, bool fail_okay);
|
|
||||||
|
|
||||||
// tells you how many rows were changed by an update or insert
|
|
||||||
int getNumRowsAffected ();
|
|
||||||
|
|
||||||
// returns false if there are no results
|
|
||||||
bool startIterRows (bool finalize);
|
|
||||||
void endIterRows ();
|
|
||||||
|
|
||||||
// call this after you executeSQL
|
|
||||||
// will return false if there are no more rows
|
|
||||||
bool getNextRow (bool finalize);
|
|
||||||
|
|
||||||
bool getNull (int colIndex);
|
|
||||||
char* getStr (int colIndex, std::string& retStr);
|
|
||||||
std::int32_t getInt (int colIndex);
|
|
||||||
float getFloat (int colIndex);
|
|
||||||
bool getBool (int colIndex);
|
|
||||||
// returns amount stored in buf
|
|
||||||
int getBinary (int colIndex, unsigned char* buf, int maxSize);
|
|
||||||
Blob getBinary (int colIndex);
|
|
||||||
std::uint64_t getBigInt (int colIndex);
|
|
||||||
|
|
||||||
sqlite3* peekConnection ()
|
|
||||||
{
|
|
||||||
return mConnection;
|
|
||||||
}
|
|
||||||
virtual bool setupCheckpointing (JobQueue*);
|
|
||||||
virtual SqliteDatabase* getSqliteDB ()
|
|
||||||
{
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
void doHook (const char* db, int walSize);
|
|
||||||
|
|
||||||
int getKBUsedDB ();
|
|
||||||
int getKBUsedAll ();
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
void run ();
|
|
||||||
void runWal ();
|
|
||||||
|
|
||||||
typedef std::mutex LockType;
|
|
||||||
typedef std::lock_guard <LockType> ScopedLockType;
|
|
||||||
LockType m_walMutex;
|
|
||||||
|
|
||||||
sqlite3* mConnection;
|
|
||||||
sqlite3_stmt* mCurrentStmt;
|
|
||||||
bool mMoreRows;
|
|
||||||
|
|
||||||
JobQueue* mWalQ;
|
|
||||||
bool walRunning;
|
|
||||||
};
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
class SqliteStatement
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
SqliteStatement (const SqliteStatement&); // no implementation
|
|
||||||
SqliteStatement& operator= (const SqliteStatement&); // no implementation
|
|
||||||
|
|
||||||
protected:
|
|
||||||
sqlite3_stmt* statement;
|
|
||||||
|
|
||||||
public:
|
|
||||||
SqliteStatement (SqliteDatabase* db, const char* statement);
|
|
||||||
SqliteStatement (SqliteDatabase* db, std::string const& statement);
|
|
||||||
~SqliteStatement ();
|
|
||||||
|
|
||||||
sqlite3_stmt* peekStatement ();
|
|
||||||
|
|
||||||
// positions start at 1
|
|
||||||
int bind (int position, const void* data, int length);
|
|
||||||
int bindStatic (int position, const void* data, int length);
|
|
||||||
int bindStatic (int position, Blob const& value);
|
|
||||||
|
|
||||||
int bind (int position, std::string const& value);
|
|
||||||
int bindStatic (int position, std::string const& value);
|
|
||||||
|
|
||||||
int bind (int position, std::uint32_t value);
|
|
||||||
int bind (int position);
|
|
||||||
|
|
||||||
// columns start at 0
|
|
||||||
int size (int column);
|
|
||||||
|
|
||||||
const void* peekBlob (int column);
|
|
||||||
Blob getBlob (int column);
|
|
||||||
|
|
||||||
std::string getString (int column);
|
|
||||||
const char* peekString (int column);
|
|
||||||
std::uint32_t getUInt32 (int column);
|
|
||||||
std::int64_t getInt64 (int column);
|
|
||||||
|
|
||||||
int step ();
|
|
||||||
int reset ();
|
|
||||||
|
|
||||||
// translate return values of step and reset
|
|
||||||
bool isOk (int);
|
|
||||||
bool isDone (int);
|
|
||||||
bool isRow (int);
|
|
||||||
bool isError (int);
|
|
||||||
std::string getError (int);
|
|
||||||
};
|
|
||||||
|
|
||||||
} // ripple
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -21,7 +21,6 @@
|
|||||||
#include <ripple/app/main/Application.h>
|
#include <ripple/app/main/Application.h>
|
||||||
#include <ripple/app/main/LocalCredentials.h>
|
#include <ripple/app/main/LocalCredentials.h>
|
||||||
#include <ripple/app/data/DatabaseCon.h>
|
#include <ripple/app/data/DatabaseCon.h>
|
||||||
#include <ripple/app/data/SqliteDatabase.h>
|
|
||||||
#include <ripple/app/misc/NetworkOPs.h>
|
#include <ripple/app/misc/NetworkOPs.h>
|
||||||
#include <ripple/app/peers/ClusterNodeStatus.h>
|
#include <ripple/app/peers/ClusterNodeStatus.h>
|
||||||
#include <ripple/app/peers/UniqueNodeList.h>
|
#include <ripple/app/peers/UniqueNodeList.h>
|
||||||
|
|||||||
@@ -19,7 +19,6 @@
|
|||||||
|
|
||||||
#include <BeastConfig.h>
|
#include <BeastConfig.h>
|
||||||
#include <ripple/app/data/DatabaseCon.h>
|
#include <ripple/app/data/DatabaseCon.h>
|
||||||
#include <ripple/app/data/SqliteDatabase.h>
|
|
||||||
#include <ripple/app/ledger/AcceptedLedger.h>
|
#include <ripple/app/ledger/AcceptedLedger.h>
|
||||||
#include <ripple/basics/UptimeTimer.h>
|
#include <ripple/basics/UptimeTimer.h>
|
||||||
#include <ripple/nodestore/Database.h>
|
#include <ripple/nodestore/Database.h>
|
||||||
|
|||||||
@@ -19,9 +19,7 @@
|
|||||||
|
|
||||||
#include <BeastConfig.h>
|
#include <BeastConfig.h>
|
||||||
|
|
||||||
#include <ripple/app/data/Database.cpp>
|
|
||||||
#include <ripple/app/data/DatabaseCon.cpp>
|
#include <ripple/app/data/DatabaseCon.cpp>
|
||||||
#include <ripple/app/data/SqliteDatabase.cpp>
|
|
||||||
#include <ripple/app/data/DBInit.cpp>
|
#include <ripple/app/data/DBInit.cpp>
|
||||||
#include <ripple/app/ledger/AccountStateSF.cpp>
|
#include <ripple/app/ledger/AccountStateSF.cpp>
|
||||||
#include <ripple/app/ledger/BookListeners.cpp>
|
#include <ripple/app/ledger/BookListeners.cpp>
|
||||||
|
|||||||
Reference in New Issue
Block a user