a week ago
Does anyone kwon how to solve/fix type error from .Q.chk? how to check which files could have issue?
Thanks
a week ago
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
part date osError files error ----------------------------------------------------------------------------------------------------------- "2001.01.01" 2001.01.01 0 ,"tab1" "" "20011.01.01" 0 ,"tab2" "" "2002.01.01" 2002.01.01 1 () "ls: cannot open directory 'badHDB/2002.01.01': Permission denied"
select from tab where or[null date;osError]
a week ago - last edited a week ago
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!
EMEA
Tel: +44 (0)28 3025 2242
AMERICAS
Tel: +1 (212) 447 6700
APAC
Tel: +61 (0)2 9236 5700
KX. All Rights Reserved.
KX and kdb+ are registered trademarks of KX Systems, Inc., a subsidiary of FD Technologies plc.