mark alias as being modified by operation returns the ID associated with alias
| 71 | // mark alias as being modified by operation |
| 72 | // returns the ID associated with alias |
| 73 | int OpBase_Modifies |
| 74 | ( |
| 75 | OpBase *op, |
| 76 | const char *alias |
| 77 | ) { |
| 78 | if(!op->modifies) op->modifies = array_new(const char *, 1); |
| 79 | array_append(op->modifies, alias); |
| 80 | |
| 81 | // make sure alias has an entry associated with it |
| 82 | // within the record mapping |
| 83 | rax *mapping = ExecutionPlan_GetMappings(op->plan); |
| 84 | |
| 85 | void *id = raxFind(mapping, (unsigned char *)alias, strlen(alias)); |
| 86 | if(id == raxNotFound) { |
| 87 | id = (void *)raxSize(mapping); |
| 88 | raxInsert(mapping, (unsigned char *)alias, strlen(alias), id, NULL); |
| 89 | } |
| 90 | |
| 91 | return (intptr_t)id; |
| 92 | } |
| 93 | |
| 94 | // adds an alias to an existing modifier |
| 95 | // such that record[modifier] = record[alias] |
no test coverage detected