MCPcopy Create free account
hub / github.com/RedisGraph/RedisGraph / AR_MERGEMAP

Function AR_MERGEMAP

src/arithmetic/map_funcs/map_funcs.c:78–101  ·  view source on GitHub ↗

Receives two maps and merges them

Source from the content-addressed store, hash-verified

76
77// Receives two maps and merges them
78SIValue AR_MERGEMAP(SIValue *argv, int argc, void *private_data) {
79 ASSERT(argc == 2);
80
81 SIValue map0 = argv[0];
82 SIValue map1 = argv[1];
83
84 if ((SI_TYPE(map0) & T_NULL) && (SI_TYPE(map1) & T_NULL)) {
85 return SI_NullVal();
86 } else if (SI_TYPE(map0) & T_NULL) {
87 return map1;
88 } else if (SI_TYPE(map1) & T_NULL) {
89 return map0;
90 } else {
91 uint keyCount0 = Map_KeyCount(map0);
92 SIValue map = Map_Clone(map1);
93 for(int i = 0; i < keyCount0; i++) {
94 SIValue key;
95 SIValue value;
96 Map_GetIdx(map0, i, &key, &value);
97 Map_Add(&map, key, value);
98 }
99 return map;
100 }
101}
102
103void Register_MapFuncs() {
104 SIType *types;

Callers

nothing calls this directly

Calls 5

SI_NullValFunction · 0.85
Map_KeyCountFunction · 0.85
Map_CloneFunction · 0.85
Map_GetIdxFunction · 0.85
Map_AddFunction · 0.85

Tested by

no test coverage detected