diff options
author | Olivier Bertrand <bertrandop@gmail.com> | 2020-11-03 18:40:28 +0100 |
---|---|---|
committer | Olivier Bertrand <bertrandop@gmail.com> | 2020-11-03 18:40:28 +0100 |
commit | 28af4212b6e2afe1d42729c9c36215ed8a8d38cb (patch) | |
tree | efae59d39a7a391fe87f8a6512945311a9cf6e32 /storage/connect/block.h | |
parent | dc3a693b7039cb4b1d46d797ca86364ac3173be7 (diff) | |
download | mariadb-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.h | 33 |
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 |