vscode-ibmi icon indicating copy to clipboard operation
vscode-ibmi copied to clipboard

Wildcard library filter in Object Browser not working

Open tom-writes-code opened this issue 1 year ago • 2 comments

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

tom-writes-code avatar Oct 22 '24 09:10 tom-writes-code

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?

sebjulliand avatar Oct 23 '24 00:10 sebjulliand

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
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=<GMT>0<BST>,M3.5.0,M10.5.0
USER=
USERNAME=
WORKDIR=
_=/QOpenSys/pkgs/bin/env
Variants
{
  "american": "#@$",
  "local": "#@$"
}
Errors
[
  {
    "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/<username>"
  },
  {
    "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/<username>"
  },
  {
    "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/<username>"
  }
]

Can confirm - that library does exist: image

tom-writes-code avatar Oct 23 '24 07:10 tom-writes-code

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

image

worksofliam avatar Oct 28 '24 15:10 worksofliam

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": ""
}

tom-writes-code avatar Oct 29 '24 11:10 tom-writes-code

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

worksofliam avatar Oct 29 '24 14:10 worksofliam

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.

tom-writes-code avatar Oct 29 '24 15:10 tom-writes-code

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;

SJLennon avatar Oct 29 '24 16:10 SJLennon

@sebjulliand Is this logic defined in the getMemberList API?

worksofliam avatar Oct 29 '24 17:10 worksofliam

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

worksofliam avatar Oct 30 '24 20:10 worksofliam

Hi

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

tom-writes-code avatar Oct 30 '24 20:10 tom-writes-code

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

image

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

image

worksofliam avatar Oct 30 '24 20:10 worksofliam

@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? (#)

worksofliam avatar Oct 30 '24 20:10 worksofliam

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": ""
}

tom-writes-code avatar Oct 31 '24 08:10 tom-writes-code

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!

sebjulliand avatar Nov 03 '24 18:11 sebjulliand

Hi Seb - no problem. Two rows retrieved:

image

tom-writes-code avatar Nov 04 '24 09:11 tom-writes-code

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

Augustodunensis avatar Nov 13 '24 10:11 Augustodunensis

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

Karlo-vg avatar Nov 25 '24 22:11 Karlo-vg

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

worksofliam avatar Nov 26 '24 14:11 worksofliam

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

tom-writes-code avatar Nov 26 '24 15:11 tom-writes-code