summaryrefslogtreecommitdiff
path: root/storage/connect/block.h
diff options
context:
space:
mode:
authorOlivier Bertrand <bertrandop@gmail.com>2020-11-03 18:40:28 +0100
committerOlivier Bertrand <bertrandop@gmail.com>2020-11-03 18:40:28 +0100
commit28af4212b6e2afe1d42729c9c36215ed8a8d38cb (patch)
treeefae59d39a7a391fe87f8a6512945311a9cf6e32 /storage/connect/block.h
parentdc3a693b7039cb4b1d46d797ca86364ac3173be7 (diff)
downloadmariadb-git-28af4212b6e2afe1d42729c9c36215ed8a8d38cb.tar.gz
- Implementation of the Json BJSON representation.
VAL structures replace VALUE classes in binary trees. These parsed binary trees are swapped and saved on file Swapping is to replace pointers by offsets to make it portable. In restoring, class pointers to functions are realloced on place. Making BJSON files is done by the new UDF function jfile_bjson. modified: storage/connect/block.h modified: storage/connect/filamtxt.cpp modified: storage/connect/filamtxt.h modified: storage/connect/global.h modified: storage/connect/json.cpp modified: storage/connect/json.h modified: storage/connect/jsonudf.cpp modified: storage/connect/jsonudf.h modified: storage/connect/tabjson.cpp modified: storage/connect/tabjson.h modified: storage/connect/value.h - Make file (record) length and map memory possibly larger than MAX_INT modified: storage/connect/filamap.cpp modified: storage/connect/filamvct.cpp modified: storage/connect/maputil.cpp modified: storage/connect/maputil.h modified: storage/connect/tabdos.cpp modified: storage/connect/xindex.cpp - Make column length as bytes (not characters) This when making column definitions modified: storage/connect/ha_connect.cc - Change the message when making index fails modified: storage/connect/ha_connect.cc - Update tests and results to reflect recent changes modified: storage/connect/mysql-test/connect/r/alter_xml.result modified: storage/connect/mysql-test/connect/r/alter_xml2.result modified: storage/connect/mysql-test/connect/r/jdbc_oracle.result modified: storage/connect/mysql-test/connect/r/json.result modified: storage/connect/mysql-test/connect/r/json_java_2.result modified: storage/connect/mysql-test/connect/r/json_java_3.result modified: storage/connect/mysql-test/connect/r/json_mongo_c.result modified: storage/connect/mysql-test/connect/r/mongo_c.result modified: storage/connect/mysql-test/connect/r/mongo_java_2.result modified: storage/connect/mysql-test/connect/r/mongo_java_3.result modified: storage/connect/mysql-test/connect/r/odbc_oracle.result modified: storage/connect/mysql-test/connect/r/xml.result modified: storage/connect/mysql-test/connect/r/xml2.result modified: storage/connect/mysql-test/connect/r/xml2_html.result modified: storage/connect/mysql-test/connect/r/xml2_mult.result modified: storage/connect/mysql-test/connect/r/xml2_zip.result modified: storage/connect/mysql-test/connect/r/xml_html.result modified: storage/connect/mysql-test/connect/r/xml_mult.result modified: storage/connect/mysql-test/connect/r/xml_zip.result modified: storage/connect/mysql-test/connect/t/alter_xml.test modified: storage/connect/mysql-test/connect/t/alter_xml2.test modified: storage/connect/mysql-test/connect/t/jdbc_oracle.test modified: storage/connect/mysql-test/connect/t/json.test modified: storage/connect/mysql-test/connect/t/mongo_test.inc modified: storage/connect/mysql-test/connect/t/odbc_oracle.test modified: storage/connect/mysql-test/connect/t/xml.test modified: storage/connect/mysql-test/connect/t/xml2.test modified: storage/connect/mysql-test/connect/t/xml2_html.test modified: storage/connect/mysql-test/connect/t/xml2_mult.test modified: storage/connect/mysql-test/connect/t/xml2_zip.test modified: storage/connect/mysql-test/connect/t/xml_html.test modified: storage/connect/mysql-test/connect/t/xml_mult.test modified: storage/connect/mysql-test/connect/t/xml_zip.test - Typo modified: storage/connect/value.cpp
Diffstat (limited to 'storage/connect/block.h')
-rw-r--r--storage/connect/block.h33
1 files changed, 20 insertions, 13 deletions
diff --git a/storage/connect/block.h b/storage/connect/block.h
index 2ca9586ee3f..479bee373fa 100644
--- a/storage/connect/block.h
+++ b/storage/connect/block.h
@@ -1,19 +1,19 @@
/**************** Block H Declares Source Code File (.H) ***************/
-/* Name: BLOCK.H Version 2.0 */
+/* Name: BLOCK.H Version 2.1 */
/* */
-/* (C) Copyright to the author Olivier BERTRAND 1998 */
+/* (C) Copyright to the author Olivier BERTRAND 1998 - 2020 */
/* */
/* This file contains the BLOCK pure virtual class definition. */
/*---------------------------------------------------------------------*/
/* Note: one of the main purpose of this base class is to take care */
-/* of the very specific way Plug handles memory allocation. */
+/* of the very specific way Connect handles memory allocation. */
/* Instead of allocating small chunks of storage via new or malloc */
-/* Plug works in its private memory pool in which it does the sub- */
+/* Connect works in its private memory pool in which it does the sub- */
/* allocation using the function PlugSubAlloc. These are never freed */
/* separately but when a transaction is terminated, the entire pool */
/* is set to empty, resulting in a very fast and efficient allocate */
/* process, no garbage collection problem, and an automatic recovery */
-/* procedure (via LongJump) when the memory is exhausted. */
+/* procedure (via throw) when the memory is exhausted. */
/* For this to work new must be given two parameters, first the */
/* global pointer of the Plug application, and an optional pointer to */
/* the memory pool to use, defaulting to NULL meaning using the Plug */
@@ -30,6 +30,8 @@
#define DllExport
#endif // !__WIN__
+typedef class JSON *PJSON;
+
/***********************************************************************/
/* Definition of class BLOCK with its method function new. */
/***********************************************************************/
@@ -37,21 +39,26 @@ typedef class BLOCK *PBLOCK;
class DllExport BLOCK {
public:
- void * operator new(size_t size, PGLOBAL g, void *p = NULL) {
- xtrc(256, "New BLOCK: size=%d g=%p p=%p\n", size, g, p);
- return (PlugSubAlloc(g, p, size));
- } // end of new
+ void *operator new(size_t size, PGLOBAL g, void *mp = NULL) {
+ xtrc(256, "New BLOCK: size=%d g=%p p=%p\n", size, g, mp);
+ return PlugSubAlloc(g, mp, size);
+ } // end of new
+
+ void* operator new(size_t size, size_t mp) {
+ xtrc(256, "Realloc at: mp=%zd\n", mp);
+ return (void*)mp;
+ } // end of new
- virtual void Printf(PGLOBAL, FILE *, uint) {} // Produce file desc
+ virtual void Printf(PGLOBAL, FILE *, uint) {} // Produce file desc
virtual void Prints(PGLOBAL, char *, uint) {} // Produce string desc
#if !defined(__BORLANDC__)
// Avoid warning C4291 by defining a matching dummy delete operator
- void operator delete(void *, PGLOBAL, void *) {}
- void operator delete(void *, size_t) {}
+ void operator delete(void*, PGLOBAL, void *) {}
+ //void operator delete(void*, size_t) {}
#endif
virtual ~BLOCK() {}
- }; // end of class BLOCK
+}; // end of class BLOCK
#endif // !BLOCK_DEFINED