codefori / vscode-ibmi

🌍 IBM i development extension for VS Code
https://codefori.github.io/docs/#/
MIT License
288 stars 95 forks source link

Wildcard library filter in Object Browser not working #2304

Closed tom-writes-code closed 3 days ago

tom-writes-code commented 1 month ago

Type: Bug

Create a filter with the following properties: Type: simple Libraries: use a wildcard, e.g. o#12345 for all libraries starting o#12345 Objects: Object types: SRCPF Members: Member type: * Not protected

The object browser is able to expand the list of libraries picked up, but no source can be seen in the libraries.

image

Previously, this would further break down into source types, but that is no longer possible when wildcarding.

Extension version: 2.13.5 VS Code version: Code 1.94.2 (384ff7382de624fb94dbaf6da11977bba1ecd427, 2024-10-09T16:08:44.566Z) OS version: Windows_NT x64 10.0.22631 Modes:

System Info |Item|Value| |---|---| |CPUs|11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz (8 x 2995)| |GPU Status|2d_canvas: enabled
canvas_oop_rasterization: enabled_on
direct_rendering_display_compositor: disabled_off_ok
gpu_compositing: enabled
multiple_raster_threads: enabled_on
opengl: enabled_on
rasterization: enabled
raw_draw: disabled_off_ok
skia_graphite: disabled_off
video_decode: enabled
video_encode: enabled
vulkan: disabled_off
webgl: enabled
webgl2: enabled
webgpu: enabled
webnn: disabled_off| |Load (avg)|undefined| |Memory (System)|15.85GB (3.74GB free)| |Process Argv|--crash-reporter-id 8ca305ff-1eb7-4e9b-88dc-b5695f2c805a| |Screen Reader|no| |VM|0%|
A/B Experiments ``` vsliv368cf:30146710 vspor879:30202332 vspor708:30202333 vspor363:30204092 vscod805cf:30301675 binariesv615:30325510 vsaa593cf:30376535 py29gd2263:31024239 c4g48928:30535728 azure-dev_surveyone:30548225 a9j8j154:30646983 962ge761:30959799 pythongtdpath:30769146 pythonnoceb:30805159 asynctok:30898717 pythonmypyd1:30879173 2e7ec940:31000449 pythontbext0:30879054 accentitlementst:30995554 cppperfnew:31000557 dsvsc020:30976470 pythonait:31006305 dsvsc021:30996838 bdiig495:31013172 dvdeprecation:31068756 dwnewjupytercf:31046870 impr_priority:31102340 nativerepl2:31139839 refactort:31108082 pythonrstrctxt:31112756 wkspc-onlycs-t:31132770 nativeloc1:31134641 wkspc-ranged-t:31151552 cf971741:31144450 autoexpandse:31146404 iacca1:31156133 notype1cf:31157160 5fd0e150:31155592 dwcopilot:31162478 icondisabled:31158250 ```
sebjulliand commented 1 month ago

Please copy/paste the content of the Code for IBM i output after the browser fails to list the source files. Also, what's your system/user CCSID?

tom-writes-code commented 1 month ago

Hiya - sorry, I've only just found the "how to report a bug" section on the documentation.

👉🏻 Issue text goes here.


Context Version
Code for IBM i version 2.13.5
Visual Studio Code version 1.94.2
Operating System win32_x64
Active extensions ``` .NET Install Tool (vscode-dotnet-runtime): 2.2.1 COBOL (cobol): 24.10.22 Code Coverage for IBM i (code-coverage-ibmi): 0.1.7 Code for IBM i Walkthroughs (vscode-ibmi-walkthroughs): 0.5.0 Configuration Editing (configuration-editing): 1.0.0 Db2 for IBM i (vscode-db2i): 1.6.1 Dev Containers (remote-containers): 0.388.0 ESLint (vscode-eslint): 3.0.10 Emmet (emmet): 1.0.0 Error Lens (errorlens): 3.20.0 Git (git): 1.0.0 Git Base (git-base): 1.0.0 GitHub (github): 0.0.1 GitHub Authentication (github-authentication): 0.0.2 GitLens — Git supercharged (gitlens): 15.6.2 IBM i Debug (ibmidebug): 2.0.1 IBM i Notebooks (vscode-ibmi-notebooks): 0.0.6 IBM i Project Explorer (vscode-ibmi-projectexplorer): 2.11.1 IIS and IIS Express extension for Visual Studio Code (iis): 1.0.14 JSON Language Features (json-language-features): 1.0.0 Jira and Bitbucket (Atlassian Labs) (atlascode): 3.0.10 Merge Conflict (merge-conflict): 1.0.0 Microsoft Account (microsoft-authentication): 0.0.1 Node Debug Auto-attach (debug-auto-launch): 1.0.0 Postman (postman-for-vscode): 1.3.0 Prettier - Code formatter (prettier-vscode): 11.0.0 TODO Highlight (vscode-todo-highlight): 1.0.5 TypeScript and JavaScript Language Features (typescript-language-features): 1.0.0 WSL (remote-wsl): 0.88.4 YAML (vscode-yaml): 1.15.0 gitignore (help-me-add): 1.0.1 vscode-openapi-viewer (vscode-openapi-viewer): 1.1.4 ```

Remote system |Setting|Value| |-|-| |IBM i OS|V7R5M0| |Tech Refresh|3| |CCSID Origin|65535| |Runtime CCSID|65535| |Default CCSID|37| |SQL|Enabled |Source dates|Disabled ### Enabled features |/QOpenSys/pkgs/bin|/usr/bin|/QSYS.lib/ILEDITOR.lib|/QSYS.LIB|/QIBM/ProdData/IBMiDebugService/bin|/QOpenSys/QIBM/ProdData/JavaVM/jdk80|/QOpenSys/QIBM/ProdData/JavaVM/jdk11|/QOpensys/pkgs/lib/jvm| |-|-|-|-|-|-|-|-| |bash|attr|GETNEWLIBL.PGM|QZDFMDB2.PGM|startDebugService.sh|64bit|64bit|openjdk-11| |chsh|iconv||||||| |find|setccsid||||||| |git|||||||| |grep|||||||| |ls|||||||| |md5sum|||||||| |sort|||||||| |stat|||||||| |tar|||||||| |tn5250||||||||
Shell env ```bash BUILDLIB=QGPL CURLIB=QGPL HOME= LANG=en_GB.utf8 LC_ALL=EN_GB LIBLS=QGPL2 QGPL QTEMP LOGIN= LOGNAME= MAIL= OLDPWD= PASE_USRGRP_LIMITED=N PATH=/QOpenSys/pkgs/bin:/QOpenSys/usr/bin:/usr/ccs/bin:usr/sbin:.:/usr/bin PWD= SHELL=/QOpenSys/pkgs/bin/bash SHLVL=1 SSH_CLIENT= SSH_CONNECTION= TZ=0,M3.5.0,M10.5.0 USER= USERNAME= WORKDIR= _=/QOpenSys/pkgs/bin/env ```
Variants ```json { "american": "#@$", "local": "#@$" } ```
Errors ```json [ { "command": "/usr/bin/attr -p /QSYS.LIB/O#06287536.FILE CCSID", "code": 1, "stderr": "attr: 001-2248 Error found getting attributes for file /QSYS.LIB/O#06287536.FILE. No such path or directory.", "cwd": "/home/" }, { "command": "cd \"/QSYS.LIB/O#06287525.FILE\" && (ls | wc -l)", "code": 1, "stderr": "bash: line 1: cd: /QSYS.LIB/O#06287525.FILE: No such file or directory", "cwd": "/home/" }, { "command": "/usr/bin/attr -p /QSYS.LIB/O#06287525.FILE CCSID", "code": 1, "stderr": "attr: 001-2248 Error found getting attributes for file /QSYS.LIB/O#06287525.FILE. No such path or directory.", "cwd": "/home/" } ] ```

Can confirm - that library does exist: image

worksofliam commented 1 month ago

Please share the contents of your Code for IBM i output channel after the list doesn't appear.

image
tom-writes-code commented 1 month ago

Thanks - I've included the full output, it's only the final few lines that are relevant to the actions here.

It seems to be reading the library as a file, rather than seeing it as another library.

.: echo "This should be the only text!"
{
    "code": 0,
    "signal": null,
    "stdout": "This should be the only text!",
    "stderr": ""
}

.: echo $HOME && cd && test -w $HOME
{
    "code": 0,
    "signal": null,
    "stdout": "/home/SHARPT",
    "stderr": ""
}

/home/SHARPT: /QOpenSys/usr/bin/qsh
liblist
{
    "code": 0,
    "signal": null,
    "stdout": "RBTSYSLIB   SYS\nQCMDOVR     SYS\nQSYS        SYS\nQSYS2       SYS\nQHLPSYS     SYS\nQUSRSYS     SYS\nQSHELL      PRD\nQGPL2       USR\nQGPL        USR\nJHCJUTIL    USR\nSUTIL       USR\nQTEMP       USR",
    "stderr": ""
}

/home/SHARPT: /QOpenSys/usr/bin/qsh
system  "CRTLIB LIB(ILEDITOR) TEXT('Code for i temporary objects. May be cleared.')"
{
    "code": 1,
    "signal": null,
    "stdout": "",
    "stderr": "CPF2111:  Library ILEDITOR already exists.\nCPC2206:  Ownership of object QZSHSYSTEM in QTEMP type *USRSPC changed."
}

/home/SHARPT: [ -d "/tmp" ]
{
    "code": 0,
    "signal": null,
    "stdout": "",
    "stderr": ""
}

/home/SHARPT: echo $SHELL
{
    "code": 0,
    "signal": null,
    "stdout": "/QOpenSys/pkgs/bin/bash",
    "stderr": ""
}

/home/SHARPT: LC_ALL=EN_US.UTF-8 system "call QSYS/QZDFMDB2 PARM('-d' '-i' '-t')"
Call QSYS2.QCMDEXC('CHGJOB CCSID(37)');
select LONG_COMMENT from qsys2.sysroutines where routine_schema = 'ILEDITOR' and routine_name = 'GETMBRINFO'
{
    "code": 0,
    "signal": null,
    "stdout": "DB2>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.\nDB2>\n  ?>\n\nLONG_COMMENT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n1 - Validate member information                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \n\n  1 RECORD(S) SELECTED.",
    "stderr": ""
}

/home/SHARPT: LC_ALL=EN_US.UTF-8 system "call QSYS/QZDFMDB2 PARM('-d' '-i' '-t')"
Call QSYS2.QCMDEXC('CHGJOB CCSID(37)');
CREATE TABLE QTEMP.O_BY3KX AS (SELECT           os.OBJNAME AS NAME,           os.OBJTYPE AS TYPE,           os.OBJATTRIBUTE AS ATTRIBUTE,           OBJTEXT AS TEXT,           os.IASP_NUMBER AS IASP_NUMBER,           os.OBJSIZE AS SIZE,           EXTRACT(EPOCH FROM (os.OBJCREATED)) * 1000 AS CREATED,           EXTRACT(EPOCH FROM (os.CHANGE_TIMESTAMP)) * 1000 AS CHANGED,           os.OBJOWNER AS OWNER,           os.OBJDEFINER AS CREATED_BY         from table( SYSTOOLS.SPLIT( INPUT_LIST => 'QGPL,QTEMP,F63HOLDDTA,F63HOLDING,F63FIGARO,QGPL,QGPL2,JHCJUTIL,SUTIL', DELIMITER => ',' ) ) libs,         table( QSYS2.OBJECT_STATISTICS( OBJECT_SCHEMA => 'QSYS', OBJTYPELIST => '*LIB', OBJECT_NAME => libs.ELEMENT ) ) os) WITH DATA;
Call QSYS2.QCMDEXC('CPYTOIMPF FROMFILE(QTEMP/O_BY3KX *FIRST) TOSTMF(''/tmp/vscodetemp-O_3ensA3HX'') MBROPT(*REPLACE) STMFCCSID(1208) RCDDLM(*CRLF) DTAFMT(*DLM) RMVBLANK(*TRAILING) ADDCOLNAM(*SQL) FLDDLM('','') DECPNT(*PERIOD)')
/home/SHARPT: LC_ALL=EN_US.UTF-8 system "call QSYS/QZDFMDB2 PARM('-d' '-i' '-t')"
Call QSYS2.QCMDEXC('CHGJOB CCSID(37)');
CREATE TABLE QTEMP.O_JX9Y4 AS (select job_name, local_port from qsys2.netstat_job_info where cast(local_port_name as VarChar(14) CCSID 37) = 'is-debug-ile' fetch first row only) WITH DATA;
Call QSYS2.QCMDEXC('CPYTOIMPF FROMFILE(QTEMP/O_JX9Y4 *FIRST) TOSTMF(''/tmp/vscodetemp-O_7OvXLZ1A'') MBROPT(*REPLACE) STMFCCSID(1208) RCDDLM(*CRLF) DTAFMT(*DLM) RMVBLANK(*TRAILING) ADDCOLNAM(*SQL) FLDDLM('','') DECPNT(*PERIOD)')
/home/SHARPT: LC_ALL=EN_US.UTF-8 system "call QSYS/QZDFMDB2 PARM('-d' '-i' '-t')"
Call QSYS2.QCMDEXC('CHGJOB CCSID(37)');
CREATE TABLE QTEMP.O_DMLL8 AS (select job_name, local_port from qsys2.netstat_job_info j where job_name = (select job_name from qsys2.netstat_job_info j where local_port = 8005 and remote_address = '0.0.0.0' fetch first row only) and remote_address = '0.0.0.0') WITH DATA;
Call QSYS2.QCMDEXC('CPYTOIMPF FROMFILE(QTEMP/O_DMLL8 *FIRST) TOSTMF(''/tmp/vscodetemp-O_jBNCEtxO'') MBROPT(*REPLACE) STMFCCSID(1208) RCDDLM(*CRLF) DTAFMT(*DLM) RMVBLANK(*TRAILING) ADDCOLNAM(*SQL) FLDDLM('','') DECPNT(*PERIOD)')
{
    "code": 0,
    "signal": null,
    "stdout": "DB2>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.\nDB2>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.\nDB2>\n  ?>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.",
    "stderr": ""
}

{
    "code": 0,
    "signal": null,
    "stdout": "DB2>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.\nDB2>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.\nDB2>\n  ?>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.",
    "stderr": ""
}

{
    "code": 0,
    "signal": null,
    "stdout": "DB2>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.\nDB2>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.\nDB2>\n  ?>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.",
    "stderr": ""
}

/home/SHARPT: test -r /QIBM/ProdData/IBMiDebugService/package.json
/home/SHARPT: rm -rf "/tmp/vscodetemp-O_3ensA3HX"
{
    "code": 1,
    "signal": null,
    "stdout": "",
    "stderr": ""
}

/home/SHARPT: LC_ALL=EN_US.UTF-8 system "call QSYS/QZDFMDB2 PARM('-d' '-i' '-t')"
Call QSYS2.QCMDEXC('CHGJOB CCSID(37)');
CREATE TABLE QTEMP.O_7ZBFN AS (select job_name, local_port from qsys2.netstat_job_info where cast(local_port_name as VarChar(14) CCSID 37) = 'is-debug-ile' fetch first row only) WITH DATA;
Call QSYS2.QCMDEXC('CPYTOIMPF FROMFILE(QTEMP/O_7ZBFN *FIRST) TOSTMF(''/tmp/vscodetemp-O_T6FGDOYm'') MBROPT(*REPLACE) STMFCCSID(1208) RCDDLM(*CRLF) DTAFMT(*DLM) RMVBLANK(*TRAILING) ADDCOLNAM(*SQL) FLDDLM('','') DECPNT(*PERIOD)')
/home/SHARPT: LC_ALL=EN_US.UTF-8 system "call QSYS/QZDFMDB2 PARM('-d' '-i' '-t')"
Call QSYS2.QCMDEXC('CHGJOB CCSID(37)');
CREATE TABLE QTEMP.O_XJT76 AS (select job_name, local_port from qsys2.netstat_job_info j where job_name = (select job_name from qsys2.netstat_job_info j where local_port = 8005 and remote_address = '0.0.0.0' fetch first row only) and remote_address = '0.0.0.0') WITH DATA;
Call QSYS2.QCMDEXC('CPYTOIMPF FROMFILE(QTEMP/O_XJT76 *FIRST) TOSTMF(''/tmp/vscodetemp-O_UgX5enLi'') MBROPT(*REPLACE) STMFCCSID(1208) RCDDLM(*CRLF) DTAFMT(*DLM) RMVBLANK(*TRAILING) ADDCOLNAM(*SQL) FLDDLM('','') DECPNT(*PERIOD)')
/home/SHARPT: rm -rf "/tmp/vscodetemp-O_7OvXLZ1A"
{
    "code": 0,
    "signal": null,
    "stdout": "",
    "stderr": ""
}

/home/SHARPT: rm -rf "/tmp/vscodetemp-O_jBNCEtxO"
{
    "code": 0,
    "signal": null,
    "stdout": "",
    "stderr": ""
}

{
    "code": 0,
    "signal": null,
    "stdout": "DB2>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.\nDB2>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.\nDB2>\n  ?>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.",
    "stderr": ""
}

{
    "code": 0,
    "signal": null,
    "stdout": "",
    "stderr": ""
}

{
    "code": 0,
    "signal": null,
    "stdout": "DB2>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.\nDB2>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.\nDB2>\n  ?>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.",
    "stderr": ""
}

/home/SHARPT: rm -rf "/tmp/vscodetemp-O_T6FGDOYm"
{
    "code": 0,
    "signal": null,
    "stdout": "",
    "stderr": ""
}

/home/SHARPT: rm -rf "/tmp/vscodetemp-O_UgX5enLi"
/home/SHARPT: LC_ALL=EN_US.UTF-8 system "call QSYS/QZDFMDB2 PARM('-d' '-i' '-t')"
Call QSYS2.QCMDEXC('CHGJOB CCSID(37)');
CREATE TABLE QTEMP.O_Q756S AS (select OS_VERSION concat '.' concat OS_RELEASE as VERSION from sysibmadm.env_sys_info) WITH DATA;
Call QSYS2.QCMDEXC('CPYTOIMPF FROMFILE(QTEMP/O_Q756S *FIRST) TOSTMF(''/tmp/vscodetemp-O_MANbOSKX'') MBROPT(*REPLACE) STMFCCSID(1208) RCDDLM(*CRLF) DTAFMT(*DLM) RMVBLANK(*TRAILING) ADDCOLNAM(*SQL) FLDDLM('','') DECPNT(*PERIOD)')
/home/SHARPT: LC_ALL=EN_US.UTF-8 system "call QSYS/QZDFMDB2 PARM('-d' '-i' '-t')"
Call QSYS2.QCMDEXC('CHGJOB CCSID(37)');
CREATE TABLE QTEMP.O_3CW9S AS (SELECT           os.OBJNAME AS NAME,           os.OBJTYPE AS TYPE,           os.OBJATTRIBUTE AS ATTRIBUTE,           OBJTEXT AS TEXT,           os.IASP_NUMBER AS IASP_NUMBER,           os.OBJSIZE AS SIZE,           EXTRACT(EPOCH FROM (os.OBJCREATED)) * 1000 AS CREATED,           EXTRACT(EPOCH FROM (os.CHANGE_TIMESTAMP)) * 1000 AS CHANGED,           os.OBJOWNER AS OWNER,           os.OBJDEFINER AS CREATED_BY         from table( SYSTOOLS.SPLIT( INPUT_LIST => 'QGPL,QTEMP,F63HOLDDTA,F63HOLDING,F63FIGARO,QGPL,QGPL2,JHCJUTIL,SUTIL', DELIMITER => ',' ) ) libs,         table( QSYS2.OBJECT_STATISTICS( OBJECT_SCHEMA => 'QSYS', OBJTYPELIST => '*LIB', OBJECT_NAME => libs.ELEMENT ) ) os) WITH DATA;
Call QSYS2.QCMDEXC('CPYTOIMPF FROMFILE(QTEMP/O_3CW9S *FIRST) TOSTMF(''/tmp/vscodetemp-O_9EK8JEbk'') MBROPT(*REPLACE) STMFCCSID(1208) RCDDLM(*CRLF) DTAFMT(*DLM) RMVBLANK(*TRAILING) ADDCOLNAM(*SQL) FLDDLM('','') DECPNT(*PERIOD)')
{
    "code": 0,
    "signal": null,
    "stdout": "",
    "stderr": ""
}

{
    "code": 0,
    "signal": null,
    "stdout": "DB2>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.\nDB2>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.\nDB2>\n  ?>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.",
    "stderr": ""
}

{
    "code": 0,
    "signal": null,
    "stdout": "DB2>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.\nDB2>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.\nDB2>\n  ?>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.",
    "stderr": ""
}

/home/SHARPT: test -f /QIBM/UserData/IBMiDebugService/certs/debug_service.pfx
/home/SHARPT: test -r /QIBM/ProdData/IBMiDebugService/package.json
{
    "code": 0,
    "signal": null,
    "stdout": "",
    "stderr": ""
}

/home/SHARPT: test -f /QIBM/UserData/IBMiDebugService/certs/debug_service.crt
{
    "code": 1,
    "signal": null,
    "stdout": "",
    "stderr": ""
}

/home/SHARPT: rm -rf "/tmp/vscodetemp-O_MANbOSKX"
/home/SHARPT: LC_ALL=EN_US.UTF-8 system "call QSYS/QZDFMDB2 PARM('-d' '-i' '-t')"
Call QSYS2.QCMDEXC('CHGJOB CCSID(37)');
CREATE TABLE QTEMP.O_WL99Z AS (select max(ptf_group_level) as HIGHEST_DB2_PTF_GROUP_LEVEL from qsys2.group_ptf_info where PTF_GROUP_DESCRIPTION like 'DB2 FOR IBM I%' and ptf_group_status = 'INSTALLED') WITH DATA;
Call QSYS2.QCMDEXC('CPYTOIMPF FROMFILE(QTEMP/O_WL99Z *FIRST) TOSTMF(''/tmp/vscodetemp-O_aBNmcxNy'') MBROPT(*REPLACE) STMFCCSID(1208) RCDDLM(*CRLF) DTAFMT(*DLM) RMVBLANK(*TRAILING) ADDCOLNAM(*SQL) FLDDLM('','') DECPNT(*PERIOD)')
{
    "code": 0,
    "signal": null,
    "stdout": "",
    "stderr": ""
}

/home/SHARPT: test -f /QIBM/UserData/IBMiDebugService/.code4i.debug
/home/SHARPT: rm -rf "/tmp/vscodetemp-O_9EK8JEbk"
{
    "code": 0,
    "signal": null,
    "stdout": "",
    "stderr": ""
}

{
    "code": 0,
    "signal": null,
    "stdout": "",
    "stderr": ""
}

/home/SHARPT: test -f /QIBM/ProdData/IBMiDebugService/bin/certs/debug_service.pfx
{
    "code": 0,
    "signal": null,
    "stdout": "",
    "stderr": ""
}

{
    "code": 0,
    "signal": null,
    "stdout": "DB2>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.\nDB2>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.\nDB2>\n  ?>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.",
    "stderr": ""
}

{
    "code": 1,
    "signal": null,
    "stdout": "",
    "stderr": ""
}

/home/SHARPT: rm -rf "/tmp/vscodetemp-O_aBNmcxNy"
/home/SHARPT: ls $HOME/.vscode/mapepire-server-2.1.4.jar
{
    "code": 0,
    "signal": null,
    "stdout": "",
    "stderr": ""
}

{
    "code": 0,
    "signal": null,
    "stdout": "/home/SHARPT/.vscode/mapepire-server-2.1.4.jar",
    "stderr": ""
}

/home/SHARPT: echo $SHELL
{
    "code": 0,
    "signal": null,
    "stdout": "/QOpenSys/pkgs/bin/bash",
    "stderr": ""
}

/home/SHARPT: /QOpenSys/usr/bin/qsh
system  "CHKOBJ OBJ(QSYS/QSYS) OBJTYPE(*LIB) AUT(*NONE)"
{
    "code": 0,
    "signal": null,
    "stdout": "",
    "stderr": "CPC2206:  Ownership of object QZSHSYSTEM in QTEMP type *USRSPC changed."
}

/home/SHARPT: LC_ALL=EN_US.UTF-8 system "call QSYS/QZDFMDB2 PARM('-d' '-i' '-t')"
Call QSYS2.QCMDEXC('CHGJOB CCSID(37)');
CREATE TABLE QTEMP.O_NWBJD AS (select    OBJNAME          as NAME,   OBJTYPE          as TYPE,   OBJATTRIBUTE     as ATTRIBUTE,   OBJTEXT          as TEXT,   0                as IS_SOURCE,   IASP_NUMBER      as IASP_NUMBER,   OBJSIZE          as SIZE,   extract(epoch from (OBJCREATED))*1000       as CREATED,   extract(epoch from (CHANGE_TIMESTAMP))*1000 as CHANGED,   OBJOWNER         as OWNER,   OBJDEFINER       as CREATED_BY from table(QSYS2.OBJECT_STATISTICS(OBJECT_SCHEMA => 'QSYS      ', OBJTYPELIST => '*LIB', OBJECT_NAME => 'O#062875*'))) WITH DATA;
Call QSYS2.QCMDEXC('CPYTOIMPF FROMFILE(QTEMP/O_NWBJD *FIRST) TOSTMF(''/tmp/vscodetemp-O_ijqhlRaC'') MBROPT(*REPLACE) STMFCCSID(1208) RCDDLM(*CRLF) DTAFMT(*DLM) RMVBLANK(*TRAILING) ADDCOLNAM(*SQL) FLDDLM('','') DECPNT(*PERIOD)')
{
    "code": 0,
    "signal": null,
    "stdout": "DB2>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.\nDB2>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.\nDB2>\n  ?>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.",
    "stderr": ""
}

/home/SHARPT: rm -rf "/tmp/vscodetemp-O_ijqhlRaC"
{
    "code": 0,
    "signal": null,
    "stdout": "",
    "stderr": ""
}

/home/SHARPT: /QOpenSys/usr/bin/qsh
system  "CHKOBJ OBJ(QSYS/O#06287525) OBJTYPE(*FILE) AUT(*UPD)"
{
    "code": 1,
    "signal": null,
    "stdout": "",
    "stderr": "CPF9801:  Object O#06287525 in library QSYS not found.\nCPC2206:  Ownership of object QZSHSYSTEM in QTEMP type *USRSPC changed."
}

/home/SHARPT: LC_ALL=EN_US.UTF-8 system "call QSYS/QZDFMDB2 PARM('-d' '-i' '-t')"
Call QSYS2.QCMDEXC('CHGJOB CCSID(37)');
CREATE TABLE QTEMP.O_N0C0J AS (With MEMBERS As (         SELECT           rtrim(cast(a.system_table_schema as char(10) )) as LIBRARY,           b.avgrowsize as RECORD_LENGTH,           a.iasp_number as ASP,           rtrim(cast(a.system_table_name as char(10) )) AS SOURCE_FILE,           rtrim(cast(b.system_table_member as char(10) )) as NAME,           coalesce(rtrim(cast(b.source_type as varchar(10) )), '') as TYPE,           coalesce(rtrim(varchar(b.partition_text)), '') as TEXT,           b.NUMBER_ROWS as LINES,           extract(epoch from (b.CREATE_TIMESTAMP))*1000 as CREATED,           extract(epoch from (b.LAST_SOURCE_UPDATE_TIMESTAMP))*1000 as CHANGED         FROM qsys2.systables AS a           JOIN qsys2.syspartitionstat AS b             ON b.table_schema = a.table_schema AND               b.table_name = a.table_name       )       Select * From MEMBERS       Where LIBRARY = 'QSYS'         And SOURCE_FILE = 'O#06287525'         And NAME Like '%'         And TYPE Like '%'       Order By NAME ASC) WITH DATA;
Call QSYS2.QCMDEXC('CPYTOIMPF FROMFILE(QTEMP/O_N0C0J *FIRST) TOSTMF(''/tmp/vscodetemp-O_4IAIdGyx'') MBROPT(*REPLACE) STMFCCSID(1208) RCDDLM(*CRLF) DTAFMT(*DLM) RMVBLANK(*TRAILING) ADDCOLNAM(*SQL) FLDDLM('','') DECPNT(*PERIOD)')
{
    "code": 0,
    "signal": null,
    "stdout": "DB2>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.\nDB2>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.\nDB2>\n  ?>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.",
    "stderr": ""
}

/home/SHARPT: rm -rf "/tmp/vscodetemp-O_4IAIdGyx"
{
    "code": 0,
    "signal": null,
    "stdout": "",
    "stderr": ""
}
worksofliam commented 1 month ago

What happens if you run this SQL statement via VS Code or ACS?

With MEMBERS As (         SELECT           rtrim(cast(a.system_table_schema as char(10) )) as LIBRARY,           b.avgrowsize as RECORD_LENGTH,           a.iasp_number as ASP,           rtrim(cast(a.system_table_name as char(10) )) AS SOURCE_FILE,           rtrim(cast(b.system_table_member as char(10) )) as NAME,           coalesce(rtrim(cast(b.source_type as varchar(10) )), '') as TYPE,           coalesce(rtrim(varchar(b.partition_text)), '') as TEXT,           b.NUMBER_ROWS as LINES,           extract(epoch from (b.CREATE_TIMESTAMP))*1000 as CREATED,           extract(epoch from (b.LAST_SOURCE_UPDATE_TIMESTAMP))*1000 as CHANGED         FROM qsys2.systables AS a           JOIN qsys2.syspartitionstat AS b             ON b.table_schema = a.table_schema AND               b.table_name = a.table_name       )       Select * From MEMBERS       Where LIBRARY = 'QSYS'         And SOURCE_FILE = 'O#06287525'         And NAME Like '%'         And TYPE Like '%'       Order By NAME ASC
tom-writes-code commented 1 month ago

image

0 rows retrieved.

I feel like it's assuming that o#06287525 is a source file, rather than a library. e.g, if it was looking for source file QRPGLESRC in library O#06287525, then it does find rows.

SJLennon commented 1 month ago

FWIW: Here's the code re-formatted with iACS:

WITH MEMBERS AS (
SELECT RTRIM(CAST(a.system_table_schema AS CHAR(10))) AS LIBRARY
       ,b.avgrowsize AS RECORD_LENGTH
       ,a.iasp_number AS ASP
       ,RTRIM(CAST(a.system_table_name AS CHAR(10))) AS SOURCE_FILE
       ,RTRIM(CAST(b.system_table_member AS CHAR(10))) AS NAME
       ,COALESCE(RTRIM(CAST(b.source_type AS VARCHAR(10))), '') AS TYPE
       ,COALESCE(RTRIM(VARCHAR(b.partition_text)), '') AS TEXT
       ,b.NUMBER_ROWS AS LINES
       ,EXTRACT(EPOCH FROM (b.CREATE_TIMESTAMP)) * 1000 AS CREATED
       ,EXTRACT(EPOCH FROM (b.LAST_SOURCE_UPDATE_TIMESTAMP)) * 1000 AS CHANGED
FROM qsys2.systables AS a
     JOIN qsys2.syspartitionstat AS b
     ON b.table_schema = a.table_schema
     AND b.table_name = a.table_name
)
SELECT *
FROM MEMBERS
WHERE LIBRARY = 'QSYS'
      AND SOURCE_FILE = 'O#06287525'
      AND NAME LIKE '%'
      AND TYPE LIKE '%'
ORDER BY NAME ASC;
worksofliam commented 1 month ago

@sebjulliand Is this logic defined in the getMemberList API?

worksofliam commented 1 month ago

@tom-writes-code If you use a specific library name, does it work? Think I am closing in on a fix.

tom-writes-code commented 1 month ago

Hi

Yep - if I specify the full library in the filter, e.g. o#06287525 then the filter works

worksofliam commented 1 month ago

Here is my filter which I have setup as you described.

image

Here is the results, which makes a lot more sense:

image
worksofliam commented 1 month ago

@tom-writes-code I wonder if this is something dumb. Any chance you can create a wildcard filter for libraries that don't contain the pound sign / hash tag? (#)

tom-writes-code commented 4 weeks ago

Same outcome I'm afraid

image

image

image

[...]
/home/SHARPT: LC_ALL=EN_US.UTF-8 system "call QSYS/QZDFMDB2 PARM('-d' '-i' '-t')"
Call QSYS2.QCMDEXC('CHGJOB CCSID(37)');
CREATE TABLE QTEMP.O_BBRRZ AS (select    OBJNAME          as NAME,   OBJTYPE          as TYPE,   OBJATTRIBUTE     as ATTRIBUTE,   OBJTEXT          as TEXT,   0                as IS_SOURCE,   IASP_NUMBER      as IASP_NUMBER,   OBJSIZE          as SIZE,   extract(epoch from (OBJCREATED))*1000       as CREATED,   extract(epoch from (CHANGE_TIMESTAMP))*1000 as CHANGED,   OBJOWNER         as OWNER,   OBJDEFINER       as CREATED_BY from table(QSYS2.OBJECT_STATISTICS(OBJECT_SCHEMA => 'QSYS      ', OBJTYPELIST => '*LIB', OBJECT_NAME => 'SNDBX*'))) WITH DATA;
Call QSYS2.QCMDEXC('CPYTOIMPF FROMFILE(QTEMP/O_BBRRZ *FIRST) TOSTMF(''/tmp/vscodetemp-O_leKCk6DX'') MBROPT(*REPLACE) STMFCCSID(1208) RCDDLM(*CRLF) DTAFMT(*DLM) RMVBLANK(*TRAILING) ADDCOLNAM(*SQL) FLDDLM('','') DECPNT(*PERIOD)')
{
    "code": 0,
    "signal": null,
    "stdout": "DB2>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.\nDB2>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.\nDB2>\n  ?>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.",
    "stderr": ""
}

/home/SHARPT: rm -rf "/tmp/vscodetemp-O_MPRFPRtG"
/home/SHARPT: ls $HOME/.vscode/mapepire-server-2.1.4.jar
{
    "code": 0,
    "signal": null,
    "stdout": "",
    "stderr": ""
}

{
    "code": 0,
    "signal": null,
    "stdout": "/home/SHARPT/.vscode/mapepire-server-2.1.4.jar",
    "stderr": ""
}

/home/SHARPT: echo $SHELL
/home/SHARPT: rm -rf "/tmp/vscodetemp-O_leKCk6DX"
{
    "code": 0,
    "signal": null,
    "stdout": "/QOpenSys/pkgs/bin/bash",
    "stderr": ""
}

{
    "code": 0,
    "signal": null,
    "stdout": "",
    "stderr": ""
}

/home/SHARPT: /QOpenSys/usr/bin/qsh
system  "CHKOBJ OBJ(QSYS/SNDBX1) OBJTYPE(*FILE) AUT(*UPD)"
/home/SHARPT: cd "/QSYS.LIB/SNDBX1.FILE" && (ls | wc -l)
{
    "code": 1,
    "signal": null,
    "stdout": "",
    "stderr": "bash: line 1: cd: /QSYS.LIB/SNDBX1.FILE: No such file or directory"
}

/home/SHARPT: /usr/bin/attr -p /QSYS.LIB/SNDBX1.FILE CCSID
{
    "code": 1,
    "signal": null,
    "stdout": "",
    "stderr": "CPF9801:  Object SNDBX1 in library QSYS not found.\nCPC2206:  Ownership of object QZSHSYSTEM in QTEMP type *USRSPC changed."
}

/home/SHARPT: LC_ALL=EN_US.UTF-8 system "call QSYS/QZDFMDB2 PARM('-d' '-i' '-t')"
Call QSYS2.QCMDEXC('CHGJOB CCSID(37)');
CREATE TABLE QTEMP.O_4YXFM AS (With MEMBERS As (         SELECT           rtrim(cast(a.system_table_schema as char(10) )) as LIBRARY,           b.avgrowsize as RECORD_LENGTH,           a.iasp_number as ASP,           rtrim(cast(a.system_table_name as char(10) )) AS SOURCE_FILE,           rtrim(cast(b.system_table_member as char(10) )) as NAME,           coalesce(rtrim(cast(b.source_type as varchar(10) )), '') as TYPE,           coalesce(rtrim(varchar(b.partition_text)), '') as TEXT,           b.NUMBER_ROWS as LINES,           extract(epoch from (b.CREATE_TIMESTAMP))*1000 as CREATED,           extract(epoch from (b.LAST_SOURCE_UPDATE_TIMESTAMP))*1000 as CHANGED         FROM qsys2.systables AS a           JOIN qsys2.syspartitionstat AS b             ON b.table_schema = a.table_schema AND               b.table_name = a.table_name       )       Select * From MEMBERS       Where LIBRARY = 'QSYS'         And SOURCE_FILE = 'SNDBX1'         And NAME Like '%'         And TYPE Like '%'       Order By NAME ASC) WITH DATA;
Call QSYS2.QCMDEXC('CPYTOIMPF FROMFILE(QTEMP/O_4YXFM *FIRST) TOSTMF(''/tmp/vscodetemp-O_GJ7ZBF9F'') MBROPT(*REPLACE) STMFCCSID(1208) RCDDLM(*CRLF) DTAFMT(*DLM) RMVBLANK(*TRAILING) ADDCOLNAM(*SQL) FLDDLM('','') DECPNT(*PERIOD)')
{
    "code": 1,
    "signal": null,
    "stdout": "",
    "stderr": "attr: 001-2248 Error found getting attributes for file /QSYS.LIB/SNDBX1.FILE.  No such path or directory."
}

{
    "code": 0,
    "signal": null,
    "stdout": "DB2>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.\nDB2>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.\nDB2>\n  ?>\nDB20000I  THE SQL COMMAND COMPLETED SUCCESSFULLY.",
    "stderr": ""
}

/home/SHARPT: cd "/QSYS.LIB/SNDBX2.FILE" && (ls | wc -l)
{
    "code": 1,
    "signal": null,
    "stdout": "",
    "stderr": "bash: line 1: cd: /QSYS.LIB/SNDBX2.FILE: No such file or directory"
}

/home/SHARPT: /usr/bin/attr -p /QSYS.LIB/SNDBX2.FILE CCSID
/home/SHARPT: rm -rf "/tmp/vscodetemp-O_GJ7ZBF9F"
{
    "code": 1,
    "signal": null,
    "stdout": "",
    "stderr": "attr: 001-2248 Error found getting attributes for file /QSYS.LIB/SNDBX2.FILE.  No such path or directory."
}

{
    "code": 0,
    "signal": null,
    "stdout": "",
    "stderr": ""
}
sebjulliand commented 3 weeks ago

That's odd...it lists the libraries but give them the *FILE type instead of *LIB.

@tom-writes-code , would you mind running this query and putting the result here?

select
      OBJNAME as NAME,
      OBJTYPE as type,
      OBJATTRIBUTE as ATTRIBUTE,
      OBJTEXT as TEXT,
      0 as IS_SOURCE,
      IASP_NUMBER as IASP_NUMBER,
      OBJSIZE as SIZE,
      extract(
        epoch
        from
          (OBJCREATED)
      ) * 1000 as CREATED,
      extract(
        epoch
        from
          (CHANGE_TIMESTAMP)
      ) * 1000 as CHANGED,
      OBJOWNER as OWNER,
      OBJDEFINER as CREATED_BY
    from
      table (
        QSYS2.OBJECT_STATISTICS (
          OBJECT_SCHEMA => 'QSYS      ',
          OBJTYPELIST => '*LIB',
          OBJECT_NAME => 'SNDBX*'
        )
      )

Thanks!

tom-writes-code commented 3 weeks ago

Hi Seb - no problem. Two rows retrieved:

image

Augustodunensis commented 2 weeks ago

I confirm this issue on V7R3M0. The unexpected behavior is occuring since version 2.13.4, on 2.13.3 is working fine.

Karlo-vg commented 3 days ago

Switching to the pre-release version fixed this issue for me.

worksofliam commented 3 days ago

We believe to have solved this issue. You can switch to the pre-release to try the fix.

tom-writes-code commented 3 days ago

Yep, this is working for me on V2.14.0, thanks everyone!