mirror of
https://github.com/MariaDB/server.git
synced 2025-01-30 10:31:54 +01:00
4d93c7f3b0
In addition to files and Mongo collections, JSON as well as XML and CSV data can be retrieved from the net as answers from REST queries. Because it uses and external package (cpprestsdk) this is currently available only to MariaDB servers compiled from source. -- Add compile flags needed on Windows /MD or /MDd (debug) -- Also include some changes needed on Linux modified: storage/connect/CMakeLists.txt - Add the xtrc tracing function modified: storage/connect/global.h modified: storage/connect/plugutil.cpp - Modify tracing to use xtrc and some typo modified: storage/connect/array.cpp modified: storage/connect/block.h modified: storage/connect/restget.cpp - Fix compilation error when ZIP is not supported modified: storage/connect/ha_connect.cc modified: storage/connect/tabfmt.cpp - Add some tracing + typo modified: storage/connect/mycat.cc modified: storage/connect/tabjson.cpp - Add conditional code based on MARIADB This to be able to use the same code in CONNECT and EOM modules modified: storage/connect/osutil.h modified: storage/connect/tabrest.cpp - Replace PlugSetPath by some concat (crashed on Fedora) + typo modified: storage/connect/reldef.cpp - Try to fix test failures modified: zlib/CMakeLists.txt
57 lines
2.7 KiB
C++
57 lines
2.7 KiB
C++
/**************** Block H Declares Source Code File (.H) ***************/
|
|
/* Name: BLOCK.H Version 2.0 */
|
|
/* */
|
|
/* (C) Copyright to the author Olivier BERTRAND 1998 */
|
|
/* */
|
|
/* 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. */
|
|
/* Instead of allocating small chunks of storage via new or malloc */
|
|
/* Plug 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. */
|
|
/* 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 */
|
|
/* standard default memory pool, example: */
|
|
/* tabp = new(g) XTAB("EMPLOYEE"); */
|
|
/* allocates a XTAB class object in the standard Plug memory pool. */
|
|
/***********************************************************************/
|
|
#if !defined(BLOCK_DEFINED)
|
|
#define BLOCK_DEFINED
|
|
|
|
#if defined(__WIN__) && !defined(NOEX)
|
|
#define DllExport __declspec( dllexport )
|
|
#else // !__WIN__
|
|
#define DllExport
|
|
#endif // !__WIN__
|
|
|
|
/***********************************************************************/
|
|
/* Definition of class BLOCK with its method function new. */
|
|
/***********************************************************************/
|
|
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
|
|
|
|
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) {}
|
|
#endif
|
|
virtual ~BLOCK() {}
|
|
|
|
}; // end of class BLOCK
|
|
|
|
#endif // !BLOCK_DEFINED
|