wiredtiger/wiredtiger — pull request #811 by keithbostic (2013-12-16 18:03:50+00:00)
Title: huge key/value support.

Here's a first set of changes for #808.

It works and passes the usual tests, but there's still a fair amount of cleanup left to do. For example, I changed __wt_write() to take a size_t instead of a uint32_t, but I haven't yet made the corresponding change to __wt_read(), and there are a bunch of places where I cast values without working through if it's the "right" place to do the conversion.

I wanted everyone to get a sense of what's going on here so we can stop digging if this is a bad idea. There's a lot of fiddly changes in here, we're going to spend some amount of time over the next 6 months futzing with various interfaces so we're consistently using size_t when talking about buffers/objects in memory, and using uint32_t when writing to/from pages. As another example, we should get rid of almost all of the uses of uint32_t in the block manager code: the primary use is as the length of an address, which is really a size_t, since it's an object in memory.