refact
This commit is contained in:
		
							parent
							
								
									1f2f6a7b18
								
							
						
					
					
						commit
						12c6ea282b
					
				| 
						 | 
					@ -13,22 +13,21 @@
 | 
				
			||||||
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 | 
					 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef _TD_TSDB_WRITE_BATCH_H_
 | 
					#ifndef _TD_TSDB_IMPL_H_
 | 
				
			||||||
#define _TD_TSDB_WRITE_BATCH_H_
 | 
					#define _TD_TSDB_IMPL_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "os.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __cplusplus
 | 
					#ifdef __cplusplus
 | 
				
			||||||
extern "C" {
 | 
					extern "C" {
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct STsdbWriteBatch STsdbWriteBatch;
 | 
					struct STsdbOptions {
 | 
				
			||||||
 | 
					  /* TODO */
 | 
				
			||||||
/* ------------------------- ------------------------- */
 | 
					 | 
				
			||||||
struct STsdbWriteBatch {
 | 
					 | 
				
			||||||
  // TODO
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __cplusplus
 | 
					#ifdef __cplusplus
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /*_TD_TSDB_WRITE_BATCH_H_*/
 | 
					#endif /*_TD_TSDB_IMPL_H_*/
 | 
				
			||||||
| 
						 | 
					@ -16,67 +16,24 @@
 | 
				
			||||||
#ifndef _TD_TSDB_H_
 | 
					#ifndef _TD_TSDB_H_
 | 
				
			||||||
#define _TD_TSDB_H_
 | 
					#define _TD_TSDB_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "os.h"
 | 
					#include "impl/tsdbImpl.h"
 | 
				
			||||||
#include "taosmsg.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __cplusplus
 | 
					#ifdef __cplusplus
 | 
				
			||||||
extern "C" {
 | 
					extern "C" {
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Types exported
 | 
					// TYPES EXPOSED
 | 
				
			||||||
typedef struct STsdb        STsdb;
 | 
					typedef struct STsdb        STsdb;
 | 
				
			||||||
typedef struct STsdbOptions STsdbOptions;
 | 
					typedef struct STsdbOptions STsdbOptions;
 | 
				
			||||||
typedef struct STsdbSMAOptions   STsdbSMAOptions;  // SMA stands for Small Materialized Aggregation
 | 
					 | 
				
			||||||
typedef struct STsdbReadOptions  STsdbReadOptions;
 | 
					 | 
				
			||||||
typedef struct STsdbSnapshot     STsdbSnapshot;
 | 
					 | 
				
			||||||
typedef struct STsdbQueryHandle  STsdbQueryHandle;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
// DB operations
 | 
					// STsdb
 | 
				
			||||||
int    tsdbCreate(const char *path);
 | 
					STsdb *tsdbOpen(const char *path, const STsdbOptions *);
 | 
				
			||||||
int    tsdbDestroy(const char *path);
 | 
					 | 
				
			||||||
STsdb *tsdbOpen(const STsdbOptions *options);
 | 
					 | 
				
			||||||
void   tsdbClose(STsdb *);
 | 
					void   tsdbClose(STsdb *);
 | 
				
			||||||
int    tsdbReset(STsdb *, const STsdbOptions *);
 | 
					void   tsdbRemove(const char *path);
 | 
				
			||||||
int    tsdbInsert(STsdb *, SSubmitReq *, SSubmitRsp *);
 | 
					 | 
				
			||||||
int    tsdbCommit(STsdb *);
 | 
					 | 
				
			||||||
int    tsdbCompact(STsdb *);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Options
 | 
					// STsdbOptions
 | 
				
			||||||
STsdbOptions *tsdbOptionsCreate();
 | 
					int  tsdbOptionsInit(STsdbOptions *);
 | 
				
			||||||
void          tsdbOptionsDestroy(STsdbOptions *);
 | 
					void tsdbOptionsClear(STsdbOptions *);
 | 
				
			||||||
void          tsdbOptionsSetId(STsdbOptions *, int id);
 | 
					 | 
				
			||||||
void          tsdbOptionsSetHoursPerFile(STsdbOptions *, int hours);
 | 
					 | 
				
			||||||
void          tsdbOptionsSetRetention(STsdbOptions *, int keep, int keep1, int keep2);
 | 
					 | 
				
			||||||
void          tsdbOptionsSetMinAndMaxRows(STsdbOptions *, int minRows, int maxRows);
 | 
					 | 
				
			||||||
void          tsdbOptionsSetPrecision(STsdbOptions *, int);
 | 
					 | 
				
			||||||
void          tsdbOptionsSetCache(STsdbOptions *, int);
 | 
					 | 
				
			||||||
typedef enum { TSDB_NO_UPDATE = 0, TSDB_WHOLE_ROW_UPDATE = 1, TSDB_PARTIAL_ROW_UPDATE = 2 } ETsdbUpdateType;
 | 
					 | 
				
			||||||
void tsdbOptionsSetUpdate(STsdbOptions *, ETsdbUpdateType);
 | 
					 | 
				
			||||||
void tsdbOptionsSetSMA(STsdbOptions *, STsdbSMAOptions *);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// STsdbSMAOptions
 | 
					 | 
				
			||||||
STsdbSMAOptions *tsdbSMAOptionsCreate();
 | 
					 | 
				
			||||||
void             tsdbSMAOptionsDestroy(STsdbSMAOptions *);
 | 
					 | 
				
			||||||
// void             tsdbSMAOptionsSetFuncs(STsdbSMAOptions *, SArray * /*Array of function to perform on each block*/);
 | 
					 | 
				
			||||||
// void             tsdbSMAOptionsSetIntervals(STsdbSMAOptions *, SArray *);
 | 
					 | 
				
			||||||
// void             tsdbSMAOptionsSetColTypes(STsdbSMAOptions *, SArray *);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// STsdbQueryHandle
 | 
					 | 
				
			||||||
STsdbQueryHandle *tsdbQueryHandleCreate(STsdb *, STsdbReadOptions *);
 | 
					 | 
				
			||||||
void              tsdbQueryHandleDestroy(STsdbQueryHandle *);
 | 
					 | 
				
			||||||
void              tsdbResetQueryHandle(STsdbQueryHandle *, STsdbReadOptions *);
 | 
					 | 
				
			||||||
bool              tsdbNextDataBlock(STsdbQueryHandle *);
 | 
					 | 
				
			||||||
// void              tsdbGetDataBlockInfo(STsdbQueryHandle *, SDataBlockInfo *);
 | 
					 | 
				
			||||||
// void              tsdbGetDataBlockStatisInfo(STsdbQueryHandle *, SDataStatis **);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// STsdbReadOptions
 | 
					 | 
				
			||||||
STsdbReadOptions *tsdbReadOptionsCreate();
 | 
					 | 
				
			||||||
void              tsdbReadOptionsDestroy(STsdbReadOptions *);
 | 
					 | 
				
			||||||
void              tsdbReadOptionsSetSnapshot(STsdbReadOptions *, STsdbSnapshot *);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// STsdbSnapshot
 | 
					 | 
				
			||||||
STsdbSnapshot *tsdbSnapshotCreate(STsdb *);
 | 
					 | 
				
			||||||
void           tsdbSnapshotDestroy(STsdbSnapshot *);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __cplusplus
 | 
					#ifdef __cplusplus
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,6 +19,7 @@ static int vnodeStartCommit(SVnode *pVnode);
 | 
				
			||||||
static int vnodeEndCommit(SVnode *pVnode);
 | 
					static int vnodeEndCommit(SVnode *pVnode);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int vnodeAsyncCommit(SVnode *pVnode) {
 | 
					int vnodeAsyncCommit(SVnode *pVnode) {
 | 
				
			||||||
 | 
					  #if 0
 | 
				
			||||||
  if (vnodeStartCommit(pVnode) < 0) {
 | 
					  if (vnodeStartCommit(pVnode) < 0) {
 | 
				
			||||||
    // TODO
 | 
					    // TODO
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -39,6 +40,7 @@ int vnodeAsyncCommit(SVnode *pVnode) {
 | 
				
			||||||
    // TODO
 | 
					    // TODO
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
  return 0;
 | 
					  return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,17 +13,23 @@
 | 
				
			||||||
 * 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 "tsdb.h"
 | 
					#ifndef _TD_TSDB_DEF_H_
 | 
				
			||||||
#include "tkv.h"
 | 
					#define _TD_TSDB_DEF_H_
 | 
				
			||||||
#include "tsdbMemTable.h"
 | 
					
 | 
				
			||||||
 | 
					#include "tsdb.h"
 | 
				
			||||||
 | 
					#include "tsdbOptions.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* -------------- -------------- */
 | 
					 | 
				
			||||||
struct STsdb {
 | 
					struct STsdb {
 | 
				
			||||||
  STkvDb *tsdb;    // original time-series data
 | 
					  char *       path;
 | 
				
			||||||
  STkvDb *lrowdb;  // last row cache
 | 
					  STsdbOptions options;
 | 
				
			||||||
  STkvDb *lastdb;  // last cache
 | 
					 | 
				
			||||||
  STkvDb *fivemindb;
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int tsdbInsert(STsdb *tsdb, SSubmitReq *pReq, SSubmitRsp *pRsp) { return 0; }
 | 
					#ifdef __cplusplus
 | 
				
			||||||
int tsdbCommit(STsdb *pTsdb) { return 0; }
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /*_TD_TSDB_DEF_H_*/
 | 
				
			||||||
| 
						 | 
					@ -1,46 +0,0 @@
 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * This program is free software: you can use, redistribute, and/or modify
 | 
					 | 
				
			||||||
 * it under the terms of the GNU Affero General Public License, version 3
 | 
					 | 
				
			||||||
 * or later ("AGPL"), as published by the Free Software Foundation.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * This program is distributed in the hope that it will be useful, but WITHOUT
 | 
					 | 
				
			||||||
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
					 | 
				
			||||||
 * FITNESS FOR A PARTICULAR PURPOSE.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * 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/>.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifndef _TD_TSDB_MEMTABLE_H_
 | 
					 | 
				
			||||||
#define _TD_TSDB_MEMTABLE_H_
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "tdef.h"
 | 
					 | 
				
			||||||
#include "thash.h"
 | 
					 | 
				
			||||||
#include "amalloc.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef __cplusplus
 | 
					 | 
				
			||||||
extern "C" {
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
typedef struct STsdbMemTable STsdbMemTable;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
STsdbMemTable *tsdbMemTableCreate(SMemAllocator *);
 | 
					 | 
				
			||||||
void           tsdbMemTableDestroy(STsdbMemTable *);
 | 
					 | 
				
			||||||
int            tsdbMemTableWriteBatch(STsdbMemTable *pTsdbMemTable, void *batch);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* --------------------- For compile and test only --------------------- */
 | 
					 | 
				
			||||||
struct STsdbMemTable {
 | 
					 | 
				
			||||||
  TSKEY          minKey;
 | 
					 | 
				
			||||||
  TSKEY          maxKey;
 | 
					 | 
				
			||||||
  SHashObj *     tData;  // uid --> SSkipList
 | 
					 | 
				
			||||||
  SMemAllocator *ma;
 | 
					 | 
				
			||||||
  T_REF_DECLARE()
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef __cplusplus
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif /*_TD_TSDB_MEMTABLE_H_*/
 | 
					 | 
				
			||||||
| 
						 | 
					@ -13,8 +13,8 @@
 | 
				
			||||||
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 | 
					 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef _TD_TSDB_INT_H_
 | 
					#ifndef _TD_TSDB_OPTIONS_H_
 | 
				
			||||||
#define _TD_TSDB_INT_H_
 | 
					#define _TD_TSDB_OPTIONS_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __cplusplus
 | 
					#ifdef __cplusplus
 | 
				
			||||||
extern "C" {
 | 
					extern "C" {
 | 
				
			||||||
| 
						 | 
					@ -24,4 +24,4 @@ extern "C" {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /*_TD_TSDB_INT_H_*/
 | 
					#endif /*_TD_TSDB_OPTIONS_H_*/
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,16 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This program is free software: you can use, redistribute, and/or modify
 | 
				
			||||||
 | 
					 * it under the terms of the GNU Affero General Public License, version 3
 | 
				
			||||||
 | 
					 * or later ("AGPL"), as published by the Free Software Foundation.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This program is distributed in the hope that it will be useful, but WITHOUT
 | 
				
			||||||
 | 
					 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
				
			||||||
 | 
					 * FITNESS FOR A PARTICULAR PURPOSE.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 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/>.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "tsdbDef.h"
 | 
				
			||||||
| 
						 | 
					@ -1,49 +0,0 @@
 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * This program is free software: you can use, redistribute, and/or modify
 | 
					 | 
				
			||||||
 * it under the terms of the GNU Affero General Public License, version 3
 | 
					 | 
				
			||||||
 * or later ("AGPL"), as published by the Free Software Foundation.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * This program is distributed in the hope that it will be useful, but WITHOUT
 | 
					 | 
				
			||||||
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
					 | 
				
			||||||
 * FITNESS FOR A PARTICULAR PURPOSE.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * 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/>.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "tsdbMemTable.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
STsdbMemTable *tsdbMemTableCreate(SMemAllocator *ma) {
 | 
					 | 
				
			||||||
  STsdbMemTable *pTsdbMemTable = NULL;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  pTsdbMemTable = (STsdbMemTable *)malloc(sizeof(*pTsdbMemTable));
 | 
					 | 
				
			||||||
  if (pTsdbMemTable == NULL) {
 | 
					 | 
				
			||||||
    return NULL;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  // TODO
 | 
					 | 
				
			||||||
  pTsdbMemTable->minKey = TSKEY_INITIAL_VAL;
 | 
					 | 
				
			||||||
  pTsdbMemTable->maxKey = TSKEY_INITIAL_VAL;
 | 
					 | 
				
			||||||
  pTsdbMemTable->ma = ma;
 | 
					 | 
				
			||||||
  pTsdbMemTable->tData = taosHashInit(1024, taosIntHash_64, true /* TODO */, HASH_NO_LOCK);
 | 
					 | 
				
			||||||
  if (pTsdbMemTable->tData == NULL) {
 | 
					 | 
				
			||||||
    // TODO
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  return pTsdbMemTable;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void tsdbMemTableDestroy(STsdbMemTable *pTsdbMemTable) {
 | 
					 | 
				
			||||||
  if (pTsdbMemTable) {
 | 
					 | 
				
			||||||
    // TODO
 | 
					 | 
				
			||||||
    free(pTsdbMemTable);
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int tsdbMemTableWriteBatch(STsdbMemTable *pTsdbMemTable, void *batch) {
 | 
					 | 
				
			||||||
  // TODO
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
		Loading…
	
		Reference in New Issue