| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
These are gathered into arrays
|
|
|
|
| |
Forgot to change the column name in 9a7523ea45cb
|
| |
|
|
|
|
| |
Avoids an error if the upgrade is performed twice..
|
|
|
|
|
| |
Prevents false positives in the odd case where something other than an
index with this name might exist.
|
|
|
|
| |
The "pg_indexes" view is much simpler to inspect than "pg_class"
|
|
|
|
| |
Tested. Works.
|
| |
|
|
|
|
| |
Because diffstat.
|
| |
|
|
|
|
|
|
|
|
|
| |
No point in doing this expensive O(n) query if the result is not used
for anything.
Will still cache the total item count if an explicit query for this is
performed, then try to keep it updated with new items added. Will likely
forget eventually tho.
|
|
|
|
|
| |
Notably the default journal_mode of DELETE is somewhat slow, some users
might want to catch up to the amazing performance of internal storage.
|
|
|
|
|
| |
Knowing what features are available could be useful for future
experiments. For example, with the JSON module or full text search.
|
|
|
|
|
|
|
|
|
| |
The :execute method is mainly used for one-off queries such as creating
tables and indices. There is no need to cache this prepared statement,
as those queries are only done on startup.
Further, prepared statements can't be reused without being reset, so
this was likely broken anyway.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There were 3 very similar methods:
- :execute()
- :execute_query()
- :execute_update()
The first one returns the prepared statement and is mainly used
internally in the library for CREATE statements.
The later two only really differ in how the results are returned.
Those two are one main method and one small one that only picks out the
iterator.
|
| |
|
|
|
|
|
|
|
| |
Removes the need for the shim in storagemanager.
The methods only really access the 'store' property of the first (self)
argument, so this is safe.
|
|
|
|
|
|
|
| |
Currently limited to SQLite3 for lack of testing on other databases.
Adds a migration to replace the non-UNIQUE prosody_index, renaming it
prosody_unique_index since ALTER INDEX does not seem to be portable.
|
| |
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Because it changes the type of the 'opt_origins' variable from util.set
to the internal _items table so next time an http app is added an error
"attempt to call a nil value (method 'empty')" is triggered. The value
is not used anywhere else.
Noticed when reviewing uses of the '_items' set property.
Not reported by any users, implying this setting is rarely used.
|
| |
| |
| |
| |
| |
| | |
For consistency with other utils.
Consistency is good.
|
| |
| |
| |
| |
| | |
Avoids the _items semi-private value, that is used everywhere for some
reason.
|
| |
| |
| |
| |
| | |
Instead of storing (start, length) tuples, store the offset to the end
of items and derive length using the previous entry.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Iterating over an entire archive to find a few items in the far end from
where iteration started is expensive, and probably more expensive with
the lazy-loading of items added in the previous commit.
Since we can now efficiently read items in random order, we can now use
a binary search to find a better starting point for iteration.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Very large list files previously ran into limits of the Lua parser, or
just caused Prosody to freeze while parsing.
Using the new index we can parse individual items one at a time. This
probably won't reduce overall CPU usage, probably the opposite, but it
will reduce the number of items in memory at once and allow collection
of items after we iterated past them.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Index file contains offsets and lengths of each item() which allows
seeking directly to each item and reading it without parsing the entire
file.
Also allows tricks like binary search, assuming items have some defined
order.
We take advantage of the 1-based indexing in tables to store a magic
header in the 0 position, so that table index 1 ends up at file index 1.
|
| |
| |
| |
| |
| |
| |
| | |
Why was the test data not in chronological order?
Altho, maybe that was the point? Except for MAM, the data might *not* be
in chronological order!
|
| |
| |
| |
| | |
Two pairs replaced by one. Blame lua-format for the line diff delta.
|
| |
| |
| |
| |
| | |
This is the config I want 90% of the time when just showing data in the
console or so.
|
| |
| |
| |
| |
| |
| |
| | |
The initial setup can be tricky if you don't know what and were settings
should be added.
This should maybe also go into site/doc/contributing
|
| |
| |
| |
| |
| | |
Some useful settings that might benefit new contributors and get them up
to speed with Modern Mercurialâ„¢ faster :)
|
| |
| |
| |
| | |
Reminder to update the configuration if the change is to be permanent.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Supporting both methods at the same time may open to spoofing attacks,
whereby a client sends a Forwarded header that is not stripped by a
reverse proxy, leading Prosody to use that instead of the X-Forwarded-*
headers actually sent by the proxy.
By only supporting one at a time, it can be configured to match what the
proxy uses.
Disabled by default since implementations are sparse and X-Forwarded-*
are everywhere.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Prefer over X-Forwarded-* since it has an actual specification.
Main practical difference is that Forwarded may carry more properties
than only the IP address since it is a structured header.
Since we parse it into an array, it is easier to do the logical thing
and iterate backwards trough proxies until an untrusted one is
encountered. Compare the handling of X-Forwarded-For.
The 'secure' field now accounts for the full chain of proxies, which
must be secure all the way to be considered secure.
|
| |
| |
| |
| |
| |
| | |
There are hints that this format might be used in X-Forwarded-For as
well, so best handle it everywhere. Strips both brackets and optional
port number.
|
| |
| |
| |
| |
| |
| |
| |
| | |
Standardized and structured replacement for the X-Forwarded-For,
X-Forwarded-Proto set of headers.
Notably, this allows per-hop protocol information, unlike
X-Forwarded-Proto which is always a single value for some reason.
|
| |
| |
| |
| | |
Backs out 895a82c5d8d4 beacuse __freeze already added in a96a2fbcc6c0
|
|\| |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Where gethostname or tohostname returns an invalid name, e.g. containing
underscores or something, to_ascii would reject this and return nil,
which triggers an error in the dns lookup.
Reported by prova2 in the chat, for whom tohostname returned a long name
containing underscores.
|
| |
| |
| |
| |
| | |
Useful to have this info available when juggling metrics, e.g. to
see if things changed between versions.
|
| |
| |
| |
| | |
Module was removed in 0.8.0 in c52b06de9b27
|
| |
| |
| |
| | |
Eases locating the request in logs
|
| | |
|
| |
| |
| |
| |
| | |
Further isolates LuaSec from Prosody core, with the ultimate goal of
allowing LuaSec to be replaced more easily.
|
| |
| |
| |
| |
| | |
Further isolates LuaSec from Prosody core, with the ultimate goal of
allowing LuaSec to be replaced more easily.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Rationale: See diffstat
When this module is imported, it ends up calling stty via term_width()
in util.human.io.table(). When this happens outside of a terminal, the
following message is sent to stdout:
stty: 'standard input': Inappropriate ioctl for device
Not importing this module avoids that.
Furthermore three is value in this module having minimal dependencies as
they might not be available when it does the checks.
Ref a1fed82c44b9
|
| | |
|
| |
| |
| |
| |
| | |
Previously the kvsep before and after the kvpairs would have been
included in kvpairs, which is incorrect but should be harmless.
|
|\| |
|