kdb+ 2.4 Release Notes¶
This page details the latest features and improvements released to kdb+ 2.4.
2009.03.09¶
Fixes and improvements¶
- q.k only, q binaries same as 2009.03.01 - rollback of "allow select x:count i by x:time mod 60 from trade where date=.." from 2009.03.01
2009.03.01¶
Fixes and improvements¶
-
checks if w is still valid (for .z.a .z.u)
-
allow select x:count i by x:time mod 60 from trade where date=..
2009.02.12¶
Fixes and improvements¶
-
solaris/sparc only - seg fault on exit when running with -ve port
-
race condition causing crash in slave mode (-s n)
-
report error for: select .. by table from table
-
multithread function parse was sometimes setting context incorrectly
2009.02.02¶
Fixes and improvements¶
-
refine symbol search in parse tree, e.g. allows select size where price>avg price by sym from trade where ...
-
Linux only - Floating Point Exception on startup on some linux versions
2009.02.01¶
Fixes and improvements¶
-
allow a non par.txt \l after a par.txt
-
allow keyedtable upsert table-with-columns-out-of-order
-
redo lj with .Q.fl, e.g. ([]a:2 3;b:3 4)lj([a:2 3]b:4 0N)
2008.12.17¶
Fixes and improvements¶
-
reinstate `u#() and `s#()
-
propagate linux errno through close(). e.g. hopen`:foo:1234
2008.12.01¶
Fixes and improvements¶
- all platforms; q.k changed only as global variable e was left defined after q.k loaded
2008.11.28¶
Fixes and improvements¶
- linux only, removes glibc 2.4 dependency which crept in 2008.11.26
2008.11.26¶
-
Fixes a bad multithreaded problem where a bad threadexec kicked in
(redid: .Q.p to only execute partitions(.Q.P and .Q.D) that have data)
2008.11.25¶
New¶
- QINIT - env var specifies where to find q.q which is autoloaded at end of q.k
Fixes and improvements¶
-
blocked `s#() `u#() - was causing crash
-
fix for parsing times ("VV";",")0:("1,2";"3,4")
-
chk params for -10!(an undocumented function now has extra param checks. Don't ask about or use.)
-
redone uj(by redoing fl)]
2008.10.30¶
-
{@[get;x;::]}each"()" was returning incorrect value
-
{t:([]a:`a`b`c;b:1 2 3);![t;();0b;enlist`b]}[] used to crash when running remotely via a multi-threaded server
-
{b:2;select a,b from ([]a:til 2)}[] used to crash when running remotely via a multi-threaded server
-
block list,:dict - used to crash
-
block delete from `.q and `.Q - used to crash
-
.. where id.sym=`msft,.. can use links in the where clause but needed to get the linked field working in the special case of first position `p# optimization.
2008.10.22¶
q.k (.Q.ff) 2 column lj with character arrays - fixed. (problem was with empty nested arrays)
plist now has a display
solaris sparc build - flush subnormals, multithreading enabled
caught as parse - eval(:;();())
2008.10.15¶
check for 0(::), was closing stdin
h".z.w\"2+3\"" no longer blocks
check for valid types (no views allowed on "." notation)
allow dicts in table slots without collapsing to table
nestedtable?nestedtable
check for ni,nj in x div y
2008.09.30¶
q.k redo lj
fix \w display for allocations>2GB
2008.09.21¶
-11!`:log with last incomplete write returns 'badtail
-11!(-2;`:log) with last incomplete returns (itemcount;filecount)
allow: mapnest[;0] etc.
allow: select u.a from `:/0/t (where u is another partitioned table)
allow: () uj table
2008.09.02¶
\t millis allow >2.1e6
view::a+a just store unique antecedents
allow [`:empty;();,;("qwe";"qw")]
2008.08.15¶
add license text (and hence license number) to .z.l
fix hang when starting linux version with neg port
2008.07.22¶
allow negport access to views(with cleanup)
2008.07.17¶
allow enumwithnulls?`
2008.07.08¶
enable: .. where attrvaluecol in enums
2008.07.01¶
fixes seeding in the new \S
2008.06.22¶
fix:
`g# on solaris
\t N for very large N
ssr allow atoms
2008.06.17¶
new:
1. neg[h][] blocking write.
this will flush all asyncs at least as far as tcp/ip.
(h"" flushes all asyncs to server)
2. `:http://host "GET .." will use content-length
(instead of just read to close)
fix:
1. v:`g#2 3;v[0]:3 properly maintains `g
2. ([]a:2 3;b:2 3)bin([]a:();b:()) allowed
3. qcon can read past blanks
2008.05.21¶
1.http put content-length in all responses
also check if GET or POST+.z.pp else 501
q.k redo hn hy .z.ph
2. allow sum(and sums) of UVT types
e.g. sum 00:23 00:09
3. fix ("..";..)0:()
2008.05.19¶
sends back 501 Not Implemented .. for http OPTIONS request
'loop error on infinite loop in transitive closure
rotate of empties
2008.05.14¶
fix multiple 'accp: too many open files error
2008.05.01¶
fix:
`$() (and "S"$() "I"$() etc) produce empty vector instead of atom
new:
.z.exit is called on exit
(group t;distinct t;t?u) all now allow nested columns in t
redo fileappend to rewrite columns that have `s`u`p`g
(otherwise if the columns are mapped there could be problems)
2008.04.18¶
fix:
multithread peach(-s n) or multiread(-p -n)
each thread has its own error
threads can pass foreign keys back to mainthread
views allowed in threads
password can be any length
new:
webserver(/file.ext) reads from html/ and then QHOME/html
"D"$"mar 3 2008"
block close of listening port socket
2008.03.27¶
specialcase empty update by to preserve type, e.g. meta update sums y by x from([]x:0#`;y:0#0)
use identity element for over and scan with nulls, e.g. sums 0N 2 3 0N 4
2008.03.13¶
random number generator: multiply-with-carry instead of lagged fibonacci
http://en.wikipedia.org/wiki/Multiply-with-carry
2008.03.09¶
kdb+ now returns 0Nd on all invalid(english) month names.
(names can be upper and lower)
FIX problem in 2008.03.02 where an empty table with
unspecified type signaled an error on upsert.
2008.03.02¶
FIX(from 2007.10.24 of `u#nested-refcount>0-append)
q.k: allow cross with atoms.
q.k (iasc;idesc;asc;desc) reject atoms
(instead of trying to open and close file handles)
s.k: fix 'if'
2008.02.22¶
FIX wsfull on insert and limit errors
2008.02.15¶
.z.a .z.u .z.w all thread sensitive now(with: q -p -1234 )
fix: {![x;();0b;(enlist`n)!y]}
the (enlist`n)!y is a special construct that ![t;c;b;a] now rejects
put in exit(1) on errors
changed definition: all:min"b"$ any:max"b"$
2008.02.04¶
fix (-T ..) timeout on long queries
2008.01.29¶
Race condition fix
2008.01.19¶
hdb negports and readonly will precalc counts and thus avoid 'vd1's
2007.12.14¶
redo stdin for windows. (fix error handling)
add fmt to q.k
redo x%y(to use divide instead of *reciprocal)
"i"$enum or `int$enum gives int. e.g. "i"$`:sym?`a
2007.11.23¶
fixed wraparound with \t
2007.11.08¶
`:file insert new
2007.11.06¶
fixed
table display for enumerated strings
t:([a:("asd";"qwe")]b:2 3)
string`t$"asd"
also now allows:
t,:("asd";4)
etc.
2007.10.24¶
fixed
`keyedtable insert matrix
2007.10.09¶
FIX
select .. by sym .. where date>..
NEW
.. where `g=,`s within ..
maybe rare to get much speedup.
but if the `g goes to 100,000 and then `s is 1 hour
of 24 you might see some overall improvement.
(with overall table of 30million)
the "select i" is instantaneous.
2007.10.03¶
FIX
d+e another try at dict+nonconformingdict
23h mod 2 allow again
NEW
check license against host and all aliases.
"D"$"yyyy/mm/dd"
in general:
(where / can be /-. or blank)
[yy]yymmdd
ddMMM[yy]yy
yyyy/[mm|MMM]/dd
[mm|MMM]/dd/[yy]yy / \z 0
dd/[mm|MMM]/[yy]yy / \z 1
MMM is jan..dec
2007.09.28¶
setenv fix on linux
2007.09.27¶
FIX
`:splay upsert newrows / removes `s - as well as `u`p`g
`sp$`s5`p5 /compound key will signal 'cast if nonexistent
select from sp where i=(first;i)by s / i=vector
NEW
`var setenv "asdf"
avgs / running averages
OTHER
`table insert nestedcolumns
now runs just as fast as
`table insert newtable
2007.09.17¶
Extended datetime arithmetic:
q)2001.01.01T07:30:00.000 + 03:00:00.000
2001.01.01T10:30:00.000
q)12:34:56.789 + 01:00:00.000
13:34:56.789
Also maps singleton splays (instead of on-demand).
2007.08.26¶
partition name in .Q.P0, not P when no threads (see previous)
2007.08.23¶
multithread access to local variables,e.g. >q -s 2
{[s]select count i from trade where sym=s}
`:splay upsert {table,dict,values}
should all work now.
in csv allows up to 99 char floats.(only 18sigfigs)
with no threads .Q.P is set to partition name
errors prepend .z.Z
2007.07.30¶
preserves `g# on upserts
(as well as inserts)
now checks "D"$ better
2007.07.26¶
in 2.3 q checked .z.pw or if no .z.pw the users
in 2.4 it checks users and .z.pw
2007.07.23¶
.z.ph puts content-type htm in front of the html.
parse "\\.. is allowed.
meta also shows foreign keys to non-keyed tables. `t!..
stack error check. (instead of crash)
NUC
for key-different dictionaries, e.g.
d:`a`b!2 3
e:`b`c!4 5
d*e uses 0^ (like d+e)
instead of 1^
this way dot product works.
2007.06.26¶
fixed text append to disk file with negative handle
report an error when reading data with invalid `s# or `u# (i.e. if created before stricter checks)
2007.06.22¶
fixed not all output going to stdout
2007.06.21¶
\1 and \2 (log redirects) now create intermediate directories
saving splays when first col is character array was failing when it needed to create directories
hdb partitions have a virtual `date column.
complicated groupby aggregations involving date didn't work. (the code didn't pick up the virtual column)
e.g.
select first date,sum[size*price]%sum size by sym from trade where date=2000.10.03
in kdb+2.3 it reported 'dateaggr
in kdb+2.4 it reported the first overall date
(simple aggrs were ok)