> On 05/19/2015 03:35 PM, Artem wrote: >> Hi! >> >> And what about result of our conversation? >> Can developers increase this limitations for using all memory that user >> have?
> Hi Artem, > The conclusion was that although the first problem encountered is the > massive allocation that FTS tries to make, fixing that won't actually > improve things much. SQLite is hard-coded to limit the size of blobs to > a bit under 1GiB. So even if we could merge these big doclists in > memory, we're pretty close to the limit of what can be stored in the > database anyway. > The 1GiB limit can be raised to 2GiB by recompiling SQLite with > different options. But any further than that would require a redesign of > the file-format. > So to fix this, we would need to change the format FTS4 uses to store > the index within the database. Some sort of extension to allow it to > spread the largest doclists across two or more database records. And > unfortunately I suspect that will remain a low priority for the > foreseeable future. > I've tested FTS5 with really large databases, and it seems to work. It's > not actually released yet though. > Regards, > Dan. Thank you very much, Dan. Now I understand the situation. Can you please tell me, when FTS5 will be released? Maybe I can test it on my data before official release? >> >>> One, you should remove sqlite-users at sqlite.org from your To list. I keep >>> bouncing email when I reply to you. Not a big deal, just an FYI. >>> Two: >>> On Sun, May 3, 2015 at 2:13 PM, James K. Lowden <jklowden at >>> schemamania.org> >>> wrote: >>>> On Thu, 30 Apr 2015 12:47:57 -0600 >>>> Scott Robison <scott at casaderobison.com> wrote: >>>> >>>>> Perhaps you are correct and "sigsegv" is not the literal signal that >>>>> is triggered in this case. I don't care, really. The fact is that an >>>>> apparently valid pointer was returned from a memory allocation >>>>> function yet can result in an invalid access for whatever reason (out >>>>> of memory, in this case). The Linux OOM killer may kill the offending >>>>> process (which is what one would expect, but one would also expect >>>>> malloc to return null, so we already know not to expect the >>>>> expected). Or it may kill some other process which has done nothing >>>>> wrong! Sure, the OS is protecting the two processes address space >>>>> from one another, but it seems to me that if one process can kill >>>>> another process, there is a problem. >>>> I have no argument with you, Scott. It's neither the first nor last >>>> thing Linix implemented in the name of efficiency that undid what >>>> previously were guarantees. My only angels-on-the-head-of-a-pin >>>> argument is that the OOM-killer doesn't invalidate malloc-returned >>>> pointers in particular. It sweeps with a much broader brush, you might >>>> say. ;-) >>>> >>> Okay, I think I see what you're saying, though there seem to be a number of >>> anecdotes online about people who do get a sigsegv from some simple memory >>> allocation strategies (designed to allocate all available memory). I would >>> not discount the possibility of a sigsegv, but agree that it is probably >>> not supposed to happen given the way optimistic memory allocation is >>> claimed to work. >> >>>> SIGSEGV *is* significant to the OP because it doesn't signify heap >>>> exhaustion. If that signal was triggered in the heap, it indicates >>>> heap corruption. If it was triggered in the stack, it suggests the >>>> stack might been exhausted, perhaps before a pure OOM condition was >>>> reached. >>>> >>> The code I was referring to in earlier posts performed a realloc. I wonder >>> if perhaps there is a corner case in there. Growing a block potentially >>> means moving a block, so if the library was copying from a previously >>> allocated block to a new block, maybe that could result in a segfault? >>> Or maybe another explanation could be that some other library other piece >>> of code replaced the default malloc-family functions. >> >> >> > _______________________________________________ > sqlite-users mailing list > sqlite-users at mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

