arrow-table-joins
Version:
For now only the full outer join over fixed-width columns is implemented.
16 lines • 2.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const apache_arrow_1 = require("apache-arrow");
const util_1 = require("../util");
function mergeFields(outerFields, innerFieldsMap) {
return outerFields.map((outer) => {
const key = util_1.fieldToKey(outer);
if (!innerFieldsMap.has(key)) {
return outer;
}
const [inner] = innerFieldsMap.get(key);
return new apache_arrow_1.Field(outer.name, outer.type, outer.nullable || inner.nullable, util_1.mergeMaps(new Map(), outer.metadata, inner.metadata));
}, []);
}
exports.mergeFields = mergeFields;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21lcmdlL2ZpZWxkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLCtDQUFxQztBQUNyQyxrQ0FBZ0Q7QUFHaEQsU0FBZ0IsV0FBVyxDQUF1QyxXQUFvQixFQUFFLGNBQTZCO0lBQ2pILE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQzdCLE1BQU0sR0FBRyxHQUFHLGlCQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDMUIsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUUsQ0FBQztRQUN6QyxPQUFPLElBQUksb0JBQUssQ0FDWixLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQ3RCLEtBQUssQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLFFBQVEsRUFDaEMsZ0JBQVMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxRQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVMsQ0FBQyxDQUN4QyxDQUFDO0lBQ3ZCLENBQUMsRUFBRSxFQUFxQixDQUFDLENBQUM7QUFDOUIsQ0FBQztBQWJELGtDQWFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmllbGQgfSBmcm9tICdhcGFjaGUtYXJyb3cnO1xuaW1wb3J0IHsgbWVyZ2VNYXBzLCBmaWVsZFRvS2V5IH0gZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQgeyBURmllbGQsIFRTY2hlbWEsIFRGaWVsZHNNYXAgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlRmllbGRzPFQgZXh0ZW5kcyBUU2NoZW1hLCBSIGV4dGVuZHMgVFNjaGVtYT4ob3V0ZXJGaWVsZHM6IEZpZWxkW10sIGlubmVyRmllbGRzTWFwOiBURmllbGRzTWFwPFI+KSB7XG4gICAgcmV0dXJuIG91dGVyRmllbGRzLm1hcCgob3V0ZXIpID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gZmllbGRUb0tleShvdXRlcik7XG4gICAgICAgIGlmICghaW5uZXJGaWVsZHNNYXAuaGFzKGtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiBvdXRlcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBbaW5uZXJdID0gaW5uZXJGaWVsZHNNYXAuZ2V0KGtleSkhO1xuICAgICAgICByZXR1cm4gbmV3IEZpZWxkKFxuICAgICAgICAgICAgb3V0ZXIubmFtZSwgb3V0ZXIudHlwZSxcbiAgICAgICAgICAgIG91dGVyLm51bGxhYmxlIHx8IGlubmVyLm51bGxhYmxlLFxuICAgICAgICAgICAgbWVyZ2VNYXBzKG5ldyBNYXAoKSwgb3V0ZXIubWV0YWRhdGEhLCBpbm5lci5tZXRhZGF0YSEpXG4gICAgICAgICkgYXMgVEZpZWxkPFQgJiBSPjtcbiAgICB9LCBbXSBhcyBURmllbGQ8VCAmIFI+W10pO1xufVxuIl19