feat(Merge Node): Better pairedItem mapping in combineBySql operation if SELECT query (#13849)

Co-authored-by: Shireen Missi <94372015+ShireenMissi@users.noreply.github.com>
This commit is contained in:
Michael Kret
2025-03-13 12:20:44 +02:00
committed by GitHub
parent d2e4706b97
commit 881d3f8771
6 changed files with 368 additions and 24 deletions

View File

@@ -386,3 +386,43 @@ export function getNodeInputsData(this: IExecuteFunctions) {
return returnData;
}
export const rowToExecutionData = (data: IDataObject): INodeExecutionData => {
const keys = Object.keys(data);
const pairedItem: IPairedItemData[] = [];
const json: IDataObject = {};
for (const key of keys) {
if (key.startsWith('pairedItem')) {
if (data[key] === undefined) continue;
pairedItem.push(data[key] as IPairedItemData);
} else {
json[key] = data[key];
}
}
return { json, pairedItem };
};
export function modifySelectQuery(userQuery: string, inputLength: number): string {
const selectMatch = userQuery.match(/SELECT\s+(.+?)\s+FROM/i);
if (!selectMatch) return userQuery;
let selectedColumns = selectMatch[1].trim();
if (selectedColumns === '*') {
return userQuery;
}
const pairedItemColumns = [];
for (let i = 1; i <= inputLength; i++) {
if (userQuery.includes(`input${i}`)) {
pairedItemColumns.push(`input${i}.pairedItem AS pairedItem${i}`);
}
}
selectedColumns += pairedItemColumns.length ? ', ' + pairedItemColumns.join(', ') : '';
return userQuery.replace(selectMatch[0], `SELECT ${selectedColumns} FROM`);
}