mirror of
https://github.com/FerretDB/documentdb.git
synced 2026-11-07 19:42:46 -05:00
### Does this PR have any customer impact? No ### Type (Feature, Refactoring, Bugfix, DevOps, Testing, Perf, etc) Refactor ### Does it involve schema level changes? (Table, Column, Index, UDF, etc level changes) No ### Are you introducing any new config? If yes, do you have tests with and without them being set? No ### Release Note (Refer [Template](../docs/release_notes/pgmongo_template.md)) ### Description Move source files under new directory. ---- #### AI description (iteration 1) #### PR Classification Code reorganization #### PR Summary This pull request moves the `helio_api` and `helio_distributed` sources under the `documentdb` directory, updating references and initialization logic accordingly. - Added `pg_documentdb.c` for initializing the `pg_documentdb` extension. - Added `documentdb_distributed.c` for initializing the `pg_documentdb_distributed` extension. - Updated `validate_helio_extension_state.sh` to include new checks for `documentdb`. - Moved `helio_api_extension_version.c` to `documentdb_extension_version.c` without code changes. - Updated various `Makefile` configurations to reflect the new directory structure and dependencies.
47 lines
1.3 KiB
C
47 lines
1.3 KiB
C
/*-------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
*
|
|
* include/utils/heap_utils.h
|
|
*
|
|
* Utility to maintain min/max heap.
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#include <postgres.h>
|
|
#include <common/hashfn.h>
|
|
#include <utils/hsearch.h>
|
|
#include "commands/commands_common.h"
|
|
|
|
#ifndef HEAP_UTILS_H
|
|
#define HEAP_UTILS_H
|
|
|
|
/**
|
|
* Defines how the heap is sorted.
|
|
* For minheap, the comparator should return true if first < second.
|
|
* For maxheap, the comparator should return true if first > second.
|
|
*/
|
|
typedef bool (*HeapComparator)(const void *first, const void *second);
|
|
|
|
/*
|
|
* binaryheap
|
|
* heapNodes variable-length array of "space" nodes
|
|
* bh_size how many nodes are currently in "nodes"
|
|
* bh_space how many nodes can be stored in "nodes"
|
|
* heapComparator comparison function to define the heap property
|
|
*/
|
|
typedef struct BinaryHeap
|
|
{
|
|
bson_value_t *heapNodes;
|
|
int64_t heapSize;
|
|
int64_t heapSpace;
|
|
HeapComparator heapComparator;
|
|
} BinaryHeap;
|
|
|
|
BinaryHeap * AllocateHeap(int64_t capacity, HeapComparator comparator);
|
|
void PushToHeap(BinaryHeap *heap, const bson_value_t *value);
|
|
bson_value_t PopFromHeap(BinaryHeap *heap);
|
|
bson_value_t TopHeap(BinaryHeap *heap);
|
|
void FreeHeap(BinaryHeap *heap);
|
|
|
|
#endif
|