116 lines
2.7 KiB
C
116 lines
2.7 KiB
C
#ifndef AMDUAT_ENC_ASL_TGK_EXEC_PLAN_H
|
|
#define AMDUAT_ENC_ASL_TGK_EXEC_PLAN_H
|
|
|
|
#include "amduat/asl/core.h"
|
|
|
|
#include <stdbool.h>
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
enum { AMDUAT_ASL_TGK_EXEC_PLAN_VERSION = 1 };
|
|
|
|
typedef enum {
|
|
AMDUAT_ASL_TGK_EXEC_OP_SEGMENT_SCAN = 0,
|
|
AMDUAT_ASL_TGK_EXEC_OP_INDEX_FILTER = 1,
|
|
AMDUAT_ASL_TGK_EXEC_OP_MERGE = 2,
|
|
AMDUAT_ASL_TGK_EXEC_OP_PROJECTION = 3,
|
|
AMDUAT_ASL_TGK_EXEC_OP_TGK_TRAVERSAL = 4,
|
|
AMDUAT_ASL_TGK_EXEC_OP_AGGREGATION = 5,
|
|
AMDUAT_ASL_TGK_EXEC_OP_LIMIT_OFFSET = 6,
|
|
AMDUAT_ASL_TGK_EXEC_OP_SHARD_DISPATCH = 7,
|
|
AMDUAT_ASL_TGK_EXEC_OP_SIMD_FILTER = 8,
|
|
AMDUAT_ASL_TGK_EXEC_OP_TOMBSTONE_SHADOW = 9
|
|
} amduat_asl_tgk_exec_operator_type_t;
|
|
|
|
typedef enum {
|
|
AMDUAT_ASL_TGK_EXEC_OP_FLAG_NONE = 0x00,
|
|
AMDUAT_ASL_TGK_EXEC_OP_FLAG_PARALLEL = 0x01,
|
|
AMDUAT_ASL_TGK_EXEC_OP_FLAG_OPTIONAL = 0x02
|
|
} amduat_asl_tgk_exec_operator_flags_t;
|
|
|
|
typedef struct {
|
|
uint64_t logseq_min;
|
|
uint64_t logseq_max;
|
|
} amduat_asl_tgk_exec_snapshot_range_t;
|
|
|
|
typedef struct {
|
|
struct {
|
|
uint8_t is_asl_segment;
|
|
uint64_t segment_start_id;
|
|
uint64_t segment_end_id;
|
|
} segment_scan;
|
|
|
|
struct {
|
|
uint32_t artifact_type_tag;
|
|
uint8_t has_type_tag;
|
|
uint32_t edge_type_key;
|
|
uint8_t has_edge_type;
|
|
uint8_t role;
|
|
} index_filter;
|
|
|
|
struct {
|
|
uint8_t deterministic;
|
|
} merge;
|
|
|
|
struct {
|
|
uint8_t project_artifact_id;
|
|
uint8_t project_tgk_edge_id;
|
|
uint8_t project_node_id;
|
|
uint8_t project_type_tag;
|
|
} projection;
|
|
|
|
struct {
|
|
uint64_t start_node_id;
|
|
uint32_t traversal_depth;
|
|
uint8_t direction;
|
|
} tgk_traversal;
|
|
|
|
struct {
|
|
uint8_t agg_count;
|
|
uint8_t agg_union;
|
|
uint8_t agg_sum;
|
|
} aggregation;
|
|
|
|
struct {
|
|
uint64_t limit;
|
|
uint64_t offset;
|
|
} limit_offset;
|
|
} amduat_asl_tgk_exec_operator_params_t;
|
|
|
|
typedef struct {
|
|
uint32_t op_id;
|
|
amduat_asl_tgk_exec_operator_type_t op_type;
|
|
amduat_asl_tgk_exec_operator_flags_t flags;
|
|
amduat_asl_tgk_exec_snapshot_range_t snapshot;
|
|
amduat_asl_tgk_exec_operator_params_t params;
|
|
uint32_t input_count;
|
|
uint32_t inputs[8];
|
|
} amduat_asl_tgk_exec_operator_def_t;
|
|
|
|
typedef struct {
|
|
uint32_t plan_version;
|
|
uint32_t operator_count;
|
|
amduat_asl_tgk_exec_operator_def_t *operators;
|
|
} amduat_asl_tgk_exec_plan_t;
|
|
|
|
bool amduat_enc_asl_tgk_exec_plan_encode_v1(
|
|
const amduat_asl_tgk_exec_plan_t *plan,
|
|
amduat_octets_t *out_bytes);
|
|
|
|
bool amduat_enc_asl_tgk_exec_plan_decode_v1(
|
|
amduat_octets_t bytes,
|
|
amduat_asl_tgk_exec_plan_t *out_plan);
|
|
|
|
void amduat_enc_asl_tgk_exec_plan_free(
|
|
amduat_asl_tgk_exec_plan_t *plan);
|
|
|
|
#ifdef __cplusplus
|
|
} /* extern "C" */
|
|
#endif
|
|
|
|
#endif /* AMDUAT_ENC_ASL_TGK_EXEC_PLAN_H */
|