-
Type error from Q chk
Posted by renbright on March 16, 2023 at 12:00 amDoes anyone kwon how to solve/fix type error from .Q.chk? how to check which files could have issue?
Thanks
renbright replied 8 months, 2 weeks ago 3 Members · 2 Replies -
2 Replies
-
There’s a thread with some info on stackoverflow:
Running
strace -p pid
may help show where.Q.chk
is falling down.This is a basic outline of a helper function I created before to debug a
part
error when trying to load a HDB.It may be a good starting point for finding the root cause issue for you too.
// https://code.kx.com/q/ref/system/#capture-stderr-output q)tmp:first system"mktemp" q){d:1_string x;{y:string y;(y;"D"$y),{r:system x;show last r;$[1~"J"$last r;(1b;-1_r;"");(0b;();-1_r)]} "ls ",x,"/",y," > ",tmp," 2>&1;echo $? >> ",tmp,";cat ",tmp}[d] each key x} `:badHDB q)tab:flip `part`date`osError`files`error!flip {d:1_string x;{y:string y;(y;"D"$y),{r:system x;$[0~"J"$last r;(0b;-1_r;"");(1b;();first r)]} "ls ",x,"/",y," > ",tmp," 2>&1;echo $? >> ",tmp,";cat ",tmp}[d] each key x} `:badHDB
The resulting table:part date osError files error ----------------------------------------------------------------------------------------------------------- "2001.01.01" 2001.01.01 0 ,"tab1" "" "2001.01.01" 0 ,"tab2" "" "2002.01.01" 2002.01.01 1 () "ls: cannot open directory 'badHDB/2002.01.01': Permission denied"
For a larger HDB filter down to partitions with issues:select from tab where or[null date;osError]
-
As a simple starting point before investigating the data, type errors in Q suggest that you have provided the wrong datatype to a function. In the case of .Q.chk make sure you’re passing in a filepath as per the documentation which is a symbol type. If you could share the line of code you’re calling the .Q.chk in and the argument you’re providing, as well as an ls on the directory you’re performing the check on, that would help in isolating the problem. An example call of .Q.chk is:
.Q.chk[`:/path/to/dir]
N.B. You will get a type error if you call .Q.chk with a string:
q).Q.chk[“/path/to/dir”]
‘type [0]
.Q.chk[“/path/to/dir”]
Hope this helps!
Log in to reply.