partial SRow code
This commit is contained in:
parent
1b6c7a5923
commit
bab6e54b13
|
@ -16,16 +16,54 @@
|
||||||
#ifndef _TD_COMMON_ROW_H_
|
#ifndef _TD_COMMON_ROW_H_
|
||||||
#define _TD_COMMON_ROW_H_
|
#define _TD_COMMON_ROW_H_
|
||||||
|
|
||||||
|
#include "os.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef struct SRow SRow;
|
// types
|
||||||
|
typedef void * SRow;
|
||||||
|
typedef struct SRowBatch SRowBatch;
|
||||||
|
typedef struct SRowBuilder SRowBuilder;
|
||||||
|
typedef struct SRowBatchIter SRowBatchIter;
|
||||||
|
typedef struct SRowBatchBuilder SRowBatchBuilder;
|
||||||
|
|
||||||
#define rowType(r)
|
// SRow
|
||||||
#define rowLen(r)
|
#define ROW_HEADER_SIZE (sizeof(uint8_t) + 2 * sizeof(uint16_t) + sizeof(uint64_t))
|
||||||
#define rowVersion(r)
|
#define rowType(r) (*(uint8_t *)(r)) // row type
|
||||||
#define rowNCols(r)
|
#define rowLen(r) (*(uint16_t *)POINTER_SHIFT(r, sizeof(uint8_t))) // row length
|
||||||
|
#define rowSVer(r) \
|
||||||
|
(*(uint16_t *)POINTER_SHIFT(r, sizeof(uint8_t) + sizeof(uint16_t))) // row schema version, only for SDataRow
|
||||||
|
#define rowNCols(r) rowSVer(r) // only for SKVRow
|
||||||
|
#define rowVer(r) (*(uint64_t)POINTER_SHIFT(r, sizeof(uint8_t) + 2 * sizeof(uint16_t))) // row version
|
||||||
|
#define rowCopy(dest, r) memcpy((dest), r, rowLen(r))
|
||||||
|
|
||||||
|
static FORCE_INLINE SRow rowDup(SRow row) {
|
||||||
|
SRow r = malloc(rowLen(row));
|
||||||
|
if (r == NULL) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
rowCopy(r, row);
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
// SRowBatch
|
||||||
|
|
||||||
|
// SRowBuilder
|
||||||
|
SRowBuilder *rowBuilderCreate();
|
||||||
|
void rowBuilderDestroy(SRowBuilder *);
|
||||||
|
|
||||||
|
// SRowBatchIter
|
||||||
|
SRowBatchIter *rowBatchIterCreate(SRowBatch *);
|
||||||
|
void rowBatchIterDestroy(SRowBatchIter *);
|
||||||
|
const SRow rowBatchIterNext(SRowBatchIter *);
|
||||||
|
|
||||||
|
// SRowBatchBuilder
|
||||||
|
SRowBatchBuilder *rowBatchBuilderCreate();
|
||||||
|
void rowBatchBuilderDestroy(SRowBatchBuilder *);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,4 +11,79 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "trow.h"
|
||||||
|
|
||||||
|
/* ------------ Structures ---------- */
|
||||||
|
struct SRowBatch {
|
||||||
|
int32_t compress : 1; // if batch row is compressed
|
||||||
|
int32_t nrows : 31; // number of rows
|
||||||
|
int32_t tlen; // total length (including `nrows` and `tlen`)
|
||||||
|
char rows[];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct SRowBuilder {
|
||||||
|
// TODO
|
||||||
|
};
|
||||||
|
|
||||||
|
struct SRowBatchIter {
|
||||||
|
int32_t counter; // row counter
|
||||||
|
SRowBatch *rb; // row batch to iter
|
||||||
|
SRow nrow; // next row
|
||||||
|
};
|
||||||
|
|
||||||
|
struct SRowBatchBuilder {
|
||||||
|
// TODO
|
||||||
|
};
|
||||||
|
|
||||||
|
/* ------------ Methods ---------- */
|
||||||
|
|
||||||
|
// SRowBuilder
|
||||||
|
SRowBuilder *rowBuilderCreate() {
|
||||||
|
SRowBuilder *pRowBuilder = NULL;
|
||||||
|
// TODO
|
||||||
|
|
||||||
|
return pRowBuilder;
|
||||||
|
}
|
||||||
|
|
||||||
|
void rowBuilderDestroy(SRowBuilder *pRowBuilder) {
|
||||||
|
if (pRowBuilder) {
|
||||||
|
free(pRowBuilder);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SRowBatchIter
|
||||||
|
SRowBatchIter *rowBatchIterCreate(SRowBatch *pRowBatch) {
|
||||||
|
SRowBatchIter *pRowBatchIter = (SRowBatchIter *)malloc(sizeof(*pRowBatchIter));
|
||||||
|
if (pRowBatchIter == NULL) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
pRowBatchIter->counter = 0;
|
||||||
|
pRowBatchIter->rb = pRowBatch;
|
||||||
|
pRowBatchIter->nrow = pRowBatch->rows;
|
||||||
|
|
||||||
|
return pRowBatchIter;
|
||||||
|
};
|
||||||
|
|
||||||
|
void rowBatchIterDestroy(SRowBatchIter *pRowBatchIter) {
|
||||||
|
if (pRowBatchIter) {
|
||||||
|
free(pRowBatchIter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const SRow rowBatchIterNext(SRowBatchIter *pRowBatchIter) {
|
||||||
|
SRow r = NULL;
|
||||||
|
if (pRowBatchIter->counter < pRowBatchIter->rb->nrows) {
|
||||||
|
r = pRowBatchIter->nrow;
|
||||||
|
pRowBatchIter->counter += 1;
|
||||||
|
pRowBatchIter->nrow = (SRow)POINTER_SHIFT(r, rowLen(r));
|
||||||
|
}
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
// SRowBatchBuilder
|
||||||
|
SRowBatchBuilder *rowBatchBuilderCreate();
|
||||||
|
void rowBatchBuilderDestroy(SRowBatchBuilder *);
|
|
@ -4,5 +4,6 @@
|
||||||
#include "meta.h"
|
#include "meta.h"
|
||||||
|
|
||||||
TEST(MetaTest, meta_open_test) {
|
TEST(MetaTest, meta_open_test) {
|
||||||
|
metaOpen(NULL);
|
||||||
std::cout << "Hello META!" << std::endl;
|
std::cout << "Hello META!" << std::endl;
|
||||||
}
|
}
|
Loading…
Reference in New Issue