aboutsummaryrefslogtreecommitdiff
path: root/src/server/database/Database/Field.h
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-05-14 16:30:05 +0200
committerShauren <shauren.trinity@gmail.com>2023-08-15 22:00:22 +0200
commit24fc0dcb1ee627cdec5ff5670a85050afc62d281 (patch)
treeb0f7a1a2c6f7959d981703c199b85905bbc43c35 /src/server/database/Database/Field.h
parenta4299c2a4b88d1cbdcea1301a190da6081abf876 (diff)
Core/DBLayer: Relaxed restrictions on which Field class member function can be used to access column value from "strict match" to "must not truncate"
(cherry picked from commit eadafb0347d606e5e3e660d21227aa15378bdb21)
Diffstat (limited to 'src/server/database/Database/Field.h')
-rw-r--r--src/server/database/Database/Field.h37
1 files changed, 16 insertions, 21 deletions
diff --git a/src/server/database/Database/Field.h b/src/server/database/Database/Field.h
index 0229c852647..d0613a3a94f 100644
--- a/src/server/database/Database/Field.h
+++ b/src/server/database/Database/Field.h
@@ -15,22 +15,27 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef _FIELD_H
-#define _FIELD_H
+#ifndef TRINITY_DATABASE_FIELD_H
+#define TRINITY_DATABASE_FIELD_H
#include "Define.h"
-#include "DatabaseEnvFwd.h"
#include <array>
#include <string>
#include <string_view>
#include <vector>
+class BaseDatabaseResultValueConverter;
+
enum class DatabaseFieldTypes : uint8
{
Null,
+ UInt8,
Int8,
+ UInt16,
Int16,
+ UInt32,
Int32,
+ UInt64,
Int64,
Float,
Double,
@@ -48,6 +53,7 @@ struct QueryResultFieldMetadata
char const* TypeName = nullptr;
uint32 Index = 0;
DatabaseFieldTypes Type = DatabaseFieldTypes::Null;
+ BaseDatabaseResultValueConverter const* Converter = nullptr;
};
/**
@@ -118,28 +124,17 @@ class TC_DATABASE_API Field
bool IsNull() const
{
- return data.value == nullptr;
+ return _value == nullptr;
}
- protected:
- struct
- {
- char const* value; // Actual data in memory
- uint32 length; // Length
- bool raw; // Raw bytes? (Prepared statement or ad hoc)
- } data;
-
- void SetByteValue(char const* newValue, uint32 length);
- void SetStructuredValue(char const* newValue, uint32 length);
-
- bool IsType(DatabaseFieldTypes type) const;
+ private:
+ char const* _value; // Actual data in memory
+ uint32 _length; // Length
- bool IsNumeric() const;
+ void SetValue(char const* newValue, uint32 length);
- private:
- QueryResultFieldMetadata const* meta;
- void LogWrongType(char const* getter) const;
- void SetMetadata(QueryResultFieldMetadata const* fieldMeta);
+ QueryResultFieldMetadata const* _meta;
+ void SetMetadata(QueryResultFieldMetadata const* meta);
void GetBinarySizeChecked(uint8* buf, size_t size) const;
};