Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

[BUG] Segmentation fault with callProcedure

未关闭
#415 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
25/100
Issue 类型
缺陷
描述清晰度
需要澄清
活跃度
停滞
领域
databases

调研方向

从提供的 callProcedure 代码片段开始,并将其行为与据报道能够成功执行的预处理语句路径进行比较。使用 Node.js 22 在 IBM i 7.4 上通过 unixODBC 和 DB2 重现,包括 INOUT 和 OUT 参数的情况;当 callProcedure 完成且没有发生 segmentation fault 时即算完成。

由索引模型根据 Issue 内容生成。

描述

Describe your system

  • odbc Package Version: 2.4.8
  • ODBC Driver: unixODBC
  • Database Name: DB2 on ibmi 7.4
  • Database Version:
  • Database OS:
  • Node.js Version: 22
  • Node.js OS: linux ubuntu

Describe the bug
calling function callProcedure on an open connection ends with a Segmentation fault. We've also tried with a prepared statement and the call to the same procedure works. Our procedure take only a varchar as a INOUT parameter. We've try with a char(500) as an IN parameter and a second OUT parameter, but the segmentation fault still appears. The input parameter is JSON string and we're expecting to retrieve a JSON object as string from the INOUT parameter.

the connection used is obtained from a pool

Expected behavior
no segmentation fault occurs when using the callProcedure function

To Reproduce
Steps to reproduce the behavior:

  1. Connect to database with options '...'
  2. Create database table '...'
  3. Run query '...'

Code
we used the following code to reproduce the issue

import odbc from 'odbc';


(async () => {
    const dsn = "<connection string>"
    let conn;
    try {
        conn = await odbc.connect(dsn);
        console.log("conn", conn.odbcConnection)
        console.log("connected", conn.connected)
        const data = {action: 'CR', data:{numcli: 103, price: 10}};
        console.log("data", data);

        const res = await conn.callProcedure(null, 'SCHEMA', 'TEST_PROC', [JSON.stringify(data)])
        console.log(res2)
    } catch (err) {
        console.error('oups something wrong happens!');
        console.error(err);
    } finally {
        if (conn) {
            await conn.close()
        }
    }
})();

Additional context
the application runs into a docker container with node-22-slim as base image

主要语言
JavaScript
星标
159
派生
92
平均合并
5 小时 59 分钟
30 天内合并 PR
3

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

IBM/node-odbc 的其他 Issue

查看 IBM/node-odbc 的全部 Issue

相似的 Issue

更多 JavaScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。