2023.03.07 03:58 PM
Is there any way to do this? `# looks to always be creating a copy of the original list for `g/`u, whether it's applied on a list reference or value. I wrote a C function to set the list object's u member (x->u) to 0, and from within q called this function and followed it up with re-applying the attribute (`g#) and this combination seems to clear the attribute without making a copy and also removes the references to the previous attribute data, allowing it to be garbage collected by .Q.gc[]. Is there another way? Thanks in advance.
2023.03.08 07:05 AM
Thanks for your question @alvi_kabir919 !
Looking forward to seeing if the community can suggest a way of achieving this.
Thanks,
Laura
2023.03.13 04:11 AM
According to the docs at Set Attribute | Reference | kdb+ and q documentation - Kdb+ and q documentation (kx.com) :
Setting or unsetting an attribute other than sorted causes a copy of the object to be made.
Using a C function as a workaround might work but it might also break in a future version when kdb+ internals change.
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.