Index: src/libchcore/TSQLiteSerializerRowData.h
===================================================================
diff -u -N -r31c4b1fc46687ed2cf35dd9fa0acec2543ae1886 -r5693271a6736f524997e3951fc7b7b6323bc6447
--- src/libchcore/TSQLiteSerializerRowData.h	(.../TSQLiteSerializerRowData.h)	(revision 31c4b1fc46687ed2cf35dd9fa0acec2543ae1886)
+++ src/libchcore/TSQLiteSerializerRowData.h	(.../TSQLiteSerializerRowData.h)	(revision 5693271a6736f524997e3951fc7b7b6323bc6447)
@@ -25,9 +25,34 @@
 #include "ISerializerContainer.h"
 #include "TRowData.h"
 #include "TSQLiteDatabase.h"
+#include "TSQLiteStatement.h"
+#include <boost/dynamic_bitset.hpp>
 
 BEGIN_CHCORE_NAMESPACE
 
+class LIBCHCORE_API TRowID
+{
+public:
+	TRowID(const TSQLiteColumnDefinitionPtr& spColumnDefinition);
+	~TRowID();
+
+	void Clear();
+
+	void SetAddedBit(bool bAdded);
+	void SetColumnBit(size_t stIndex, bool bColumnExists);
+
+	bool HasAny() const;
+
+	bool operator==(const TRowID rSrc) const;
+	bool operator<(const TRowID rSrc) const;
+
+private:
+#pragma warning(push)
+#pragma warning(disable: 4251)
+	boost::dynamic_bitset<> m_bitset;
+#pragma warning(pop)
+};
+
 class LIBCHCORE_API TSQLiteSerializerRowData : public ISerializerRowData
 {
 public:
@@ -37,8 +62,11 @@
 	virtual ISerializerRowData& operator%(const TRowData& rData);
 	virtual ISerializerRowData& SetValue(const TRowData& rData);
 
-	void Flush(const sqlite::TSQLiteDatabasePtr& spDatabase, const TString& strContainerName);
+	TString GetQuery(const TString& strContainerName) const;
+	TRowID GetChangeIdentification() const;
 
+	void BindParamsAndExec(sqlite::TSQLiteStatement& tStatement);
+
 private:
 	size_t m_stRowID;
 	bool m_bAdded;