| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
Before this change, both test-book-meta-backend and test-cal-meta-backend
failed when there was no evolution-source-registry running. This change
fixes it and makes sure correct source registry is used, like the one
from the build directory, not the system one.
|
| |
|
|
|
| |
There is no '.libs' in the build directory since the move to CMake,
but some tests still referenced it.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
One change related specifically for Google servers, to not try twice when
the first load fails with "404 Not Found".
The other change is to verify that the collection on the server did change
meanwhile. If it did, then it's possible it was due to the component which
is not in the local cache yes, thus try to load it. If the collection did
not change, then it means the local cache is up-to-date with the server
content, thus the to-be-loaded object is not on the server, thus no need
to poke it and receive failure anyway. This works only if the server
supports getctag extension.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
Even this could be achieved with general search functions (e_book_cache_search_with_callback(),
e_cal_cache_search_with_callback()), it is too inefficient, thus added these new
specialized functions e_book_cache_get_uids_with_extra() and
e_cal_cache_get_ids_with_extra().
|
| |
|
|
|
|
| |
When no 'rid' is provided the function should return the master
object and all of its detached instances, not only the master
object itself.
|
| | |
|
| |
|
|
|
|
| |
The main loop should be passed always as a user_data, because
the function called from the callback expects it and there is
no guarantee in which order the callbacks will be called.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
The upcoming libical release can have the deprecated symbol removed
and the replacement is available in the requested minimum version
of the libical already, thus no dependency change by replacing it.
|
| | |
|
| | |
|
| |
|
|
|
| |
That seems to be the correct (common) variable name. Also ensure
the folders will not be empty.
|
| | |
|
| |
|
|
|
| |
Let's have it as it's common to be, which means top level src/ for
sources, single data/ for data, and so on.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
A counterpart for E_CONTACT_X509_CERT.
|
| |
|
|
|
|
|
|
|
|
|
| |
We do not want the following two calls to behave differently:
e_vcard_attribute_new ("", "X-HELLO")
e_vcard_attribute_new (NULL, "X-HELLO")
Elsewhere in the vCard code, attribute group names are guaranteed to be
NULL or non-empty strings, so we should follow that precedent here.
https://bugzilla.gnome.org/show_bug.cgi?id=751044
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
| |
Couple related changes:
a) no need to wait for a connected state in tests, it only makes thing slower
b) have larger interval for finalize wait
c) avoid memory leak (and test failure) in test-book-client-view-operations
d) update ko_KR alphabet in test-book-client-cursor-operations
e) skip test-book-client-cursor-operations from 'make check', due it being too slow
|
| |
|
|
|
|
| |
Since this change the client is responsible to provide credentials
to use to authenticate backends (through ESource-s, to be more precise),
unless the credentials are already saved.
|
| |
|
|
|
|
| |
The test depends on actual ICU version. To have it properly working,
independently on the ICU version, one would provide a custom
dataset to ICU, which is currently too complicated.
|
| |
|
|
|
|
|
| |
Commit 8231f94 broken ABI, by adding additional parameter to
e_phone_number_get_national_number function.
This patch is implementing fix for bug 735659 without breaking ABI, by
removing leading zeros from phone numbers in EBookSqlite directly.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[00:21] <tristan> dwmw2, if you really think that, then it will have to be
rethought again, but if we're gonna rethink it again - please
add a failing test case to test-client-custom-summary.c before
we even go down that road.
Here you go :)
Note: This fails because we're using an inner join of folder_id with
folder_id_email_list on uid. Which means that records in folder_id
which don't *have* an email address aren't considered for the search.
This is the query:
SELECT DISTINCT summary.uid, summary.vcard, summary.bdata
FROM 'folder_id' AS summary
JOIN 'folder_id_email_list' AS email_list
ON +email_list.uid = summary.uid
WHERE ((summary.nickname IS NOT NULL AND summary.nickname LIKE 'p%')
OR (email_list.value IS NOT NULL AND email_list.value LIKE 'p%')
OR ((summary.full_name IS NOT NULL AND summary.full_name LIKE 'p%')
OR (summary.family_name IS NOT NULL AND summary.family_name LIKE 'p%')
OR (summary.given_name IS NOT NULL AND summary.given_name LIKE 'p%')
OR (summary.nickname IS NOT NULL AND summary.nickname LIKE 'p%'))
OR (summary.file_as IS NOT NULL AND summary.file_as LIKE 'p%'));
You actually need a LEFT OUTER JOIN there, if you're going to do it that
way.
The above query takes about 1350ms on my data set with 238121 records.
If I change it to a LEFT OUTER JOIN, it looks like it will literally
take hours, so I didn't let it finish. I'm not sure what the '+' sign
in 'ON +email_list.uid = summary.uid' is supposed to do, but if I
*remove* that to make it 'LEFT OUTER JOIN … ON email_list.uid = summary.uid'
the query then completes in about 1650ms.
I can improve that by restructuring the query to look like this:
SELECT DISTINCT summary.uid, summary.vcard, summary.bdata
FROM 'folder_id' AS summary
JOIN 'folder_id_email_list' AS email_list
ON +email_list.uid = summary.uid
WHERE (email_list.value IS NOT NULL AND email_list.value LIKE 'p%')
UNION
SELECT summary.uid, summary.vcard, summary.bdata
FROM 'folder_id' AS summary
WHERE ((summary.nickname IS NOT NULL AND summary.nickname LIKE 'p%')
OR ((summary.full_name IS NOT NULL AND summary.full_name LIKE 'p%')
OR (summary.family_name IS NOT NULL AND summary.family_name LIKE 'p%')
OR (summary.given_name IS NOT NULL AND summary.given_name LIKE 'p%')
OR (summary.nickname IS NOT NULL AND summary.nickname LIKE 'p%'))
OR (summary.file_as IS NOT NULL AND summary.file_as LIKE 'p%'));
That runs in about 460ms on my data set.
I can get it down to about 400ms by eliding some of the IS NOT NULL checks
that seem rather gratuitous (although shouldn't sqlite do that for itself
since it's a fairly bloody obvious optimisation?):
SELECT DISTINCT summary.uid, summary.vcard, summary.bdata
FROM 'folder_id' AS summary
JOIN 'folder_id_email_list' AS email_list
ON +email_list.uid = summary.uid
WHERE (email_list.value LIKE 'p%')
UNION
SELECT summary.uid, summary.vcard, summary.bdata
FROM 'folder_id' AS summary
WHERE ((summary.nickname LIKE 'p%')
OR (summary.full_name LIKE 'p%')
OR (summary.family_name LIKE 'p%')
OR (summary.given_name LIKE 'p%')
OR (summary.nickname LIKE 'p%')
OR (summary.file_as LIKE 'p%'));
Finally, if I actually add indices on the fields that need them, such as
file_as, nickname, etc., I can get the search time down to 5-10ms. This
*only* works for my refactored queries using 'UNION', and not for the JOIN
versions. Obviously the indices aren't useful on the results of the JOIN.
(Note: we did already have an index on file_as_localized, but not file_as.
And likewise for some other fields).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
number
EBookSqlite parses phonenumbers using libphonenumber - result of this
operation depends on currently set locale.
Some countries use leading 0 as area code prefix required when number is
presented in national format (without country code) e.g. in United
Kingdom.
This leading zeros may lead to wrong search queries if locale is not set
correctly and number in address book is stored in international format
and search query tries to find it using national format.
For example UK's phone number +44 2033445566 will be stored in user
address book in form - national number: 2033445566, country code: 44.
If user wants to query this number using national format -
02033445566 (with leading zero, e.g. number in such format could be
retrieved from users phone call log) result of operation depends on
currently set locale.
If system locale will be set to en_GB this number will be parsed using
en_GB as default region before making query which will lead to parsing it
into national number 2033445566 and country code 44 (the same like in database).
As EBookSqlite before making query is removing country code from numbers
for which default region was used, search query will look like:
... WHERE (phone_list.value_phone = '2033445566')
which will correctly find contact.
On the other hand the same search query won't return expected result
when system locale will be set to other locale than en_GB, e.g. en_US,
in that case 02033445566 number will be parsed into national number
02033445566 and country code 1, leading to a query
... WHERE (phone_list.value_phone = '02033445566')
Leading zero(s) won't allow to correctly find contact from address book.
EBookSqlite should remove them before making query, but leading
zeros shouldn't be removed from E164 values in contacts vCards.
This change adds additional parameter to
e_phone_number_get_national_number that indicates if leading
zeros should be removed from national number.
EBookSqlite code is updated to use national number without leading zeros
when creating search index.
|
| |
|
|
| |
... for email and X509 certificates.
|
| | |
|
| |
|
|
|
|
| |
The 'make distcheck' fails due to nonexistence of the Camel's provider
directory when running certain tests. Creating it, even left empty,
fixes the tests failure and makes it pass properly.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I also added license information to source files where it was
missing and changed the way the license block is organized. All
the sources' license information comments follow the same pattern:
/* [ Optional short file description ]
*
* [ Optional copyright notices]
*
* License information block
*
* [ Optional 'Authors:' section ]
*/
The LGPL is references consistently now; source files with main()
function, like tests or D-Bus services, use 'program' in the license
information block, while the other sources use 'library' word.
|
| | |
|
| |
|
|
| |
https://bugzilla.gnome.org/show_bug.cgi?id=721737
|
| | |
|