Error contact reading

Simon Redman simon at ergotech.com
Fri Oct 18 05:31:27 BST 2019


Batch accesses are faster than single accesses. I haven't tried it for
contacts, but one time when I went to one-by-one access for SMS it was
like 15x slower.

On the other hand, I have thousands of text messages and only a couple
hundred contacts, so the problem is less. My suggestion would be to
break it in to batches of 75 (to pick a random number that I'm pretty
sure is safe). Probably in ContactsHelper.getVCardsForContactIDs.

I will try to do this this weekend but if someone else beats me to it I
won't be hurt :)

Thanks,
Simon

On 10/16/19 10:15 AM, Albert Vaca Cintora wrote:
> I don't see any use of this function that isn't with either a single
> contact or all the contacts (correct me if I'm wrong). The "too many
> variables" would be avoided by having a method that in the second case
> just doesn't use a "where in", because the problem is too many
> variables and not too many results. 
>
> On Mon, Oct 14, 2019, 07:06 Simon Redman <simon at ergotech.com
> <mailto:simon at ergotech.com>> wrote:
>
>     Yes, probably we could do this. The trouble is that for the first
>     time running synchronization the desktop would then call this
>     method with the complete list of changed contacts. Since it is
>     first sync, it would be all of them, thus it would have the same
>     problem.
>
>     So the simplest solution would be to just break it in to batches
>     since this solves both cases. But what is a safe batch size?
>
>     On October 12, 2019 12:01:53 PM PDT, Albert Vaca Cintora
>     <albertvaka at gmail.com <mailto:albertvaka at gmail.com>> wrote:
>
>         Or even, if we are requesting *all* the IDs, I guess we could remove
>         the `WHERE ID IN()` in that call?
>
>         On Sat, Oct 12, 2019 at 9:00 PM Albert Vaca Cintora
>         <albertvaka at gmail.com <mailto:albertvaka at gmail.com>> wrote:
>
>             Actually here is the call for all the IDs [1], the
>             previous one only requests a single ID.
>             https://invent.kde.org/kde/kdeconnect-android/blob/master/src/org/kde/kdeconnect/Plugins/ContactsPlugin/ContactsPlugin.java#L196
>             On Sat, Oct 12, 2019 at 8:57 PM Albert Vaca Cintora
>             <albertvaka at gmail.com <mailto:albertvaka at gmail.com>> wrote:
>
>                 It looks like in getColumnsFromContactsForIDs [1] we
>                 are passing to many IDs. A solution probably would be
>                 we could request them in smaller batches.
>                 https://invent.kde.org/kde/kdeconnect-android/blob/master/src/org/kde/kdeconnect/Plugins/ContactsPlugin/ContactsPlugin.java#L161
>                 On Sat, Oct 12, 2019 at 7:19 PM Simon Redman
>                 <simon at ergotech.com <mailto:simon at ergotech.com>> wrote:
>
>                     Hmm. I have no idea what is causing this (since
>                     it's below Android's "we're totally not using a
>                     sqlite database" layer) Is this reliably
>                     reproducible? (If so, how?) On 10/12/19 8:48 AM,
>                     Aleix Pol wrote:
>
>                         Hey Simon, I was looking at adb logs, I saw
>                         this error, maybe you can take a look. 10-12
>                         17:36:27.053 29958 2983 E KDE/Device:
>                         android.database.sqlite.SQLiteException: too
>                         many SQL variables (code 1): , while
>                         compiling: SELECT lookup,
>                         contact_last_updated_timestamp FROM
>                         view_contacts WHERE ((1)) AND (lookup
>                         IN(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
>                         ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
>                         ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
>                         ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
>                         ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
>                         ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
>                         ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
>                         ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
>                         ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
>                         ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?))
>                         10-12 17:36:27.053 29958 2983 E KDE/Device: at
>                         android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:179)
>                         10-12 17:36:27.053 29958 2983 E KDE/Device: at
>                         android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
>                         10-12 17:36:27.053 29958 2983 E KDE/Device: at
>                         android.content.ContentProviderProxy.query(ContentProviderNative.java:418)
>                         10-12 17:36:27.053 29958 2983 E KDE/Device: at
>                         android.content.ContentResolver.query(ContentResolver.java:754)
>                         10-12 17:36:27.053 29958 2983 E KDE/Device: at
>                         android.content.ContentResolver.query(ContentResolver.java:704)
>                         10-12 17:36:27.053 29958 2983 E KDE/Device: at
>                         android.content.ContentResolver.query(ContentResolver.java:662)
>                         10-12 17:36:27.053 29958 2983 E KDE/Device: at
>                         org.kde.kdeconnect.Helpers.ContactsHelper.getColumnsFromContactsForIDs(ContactsHelper.java:307)
>                         10-12 17:36:27.053 29958 2983 E KDE/Device: at
>                         org.kde.kdeconnect.Plugins.ContactsPlugin.ContactsPlugin.handleRequestAllUIDsTimestamps(ContactsPlugin.java:196)
>                         10-12 17:36:27.053 29958 2983 E KDE/Device: at
>                         org.kde.kdeconnect.Plugins.ContactsPlugin.ContactsPlugin.onPacketReceived(ContactsPlugin.java:253)
>                         10-12 17:36:27.053 29958 2983 E KDE/Device: at
>                         org.kde.kdeconnect.Device.onPacketReceived(Device.java:569)
>                         10-12 17:36:27.053 29958 2983 E KDE/Device: at
>                         org.kde.kdeconnect.Backends.BaseLink.packageReceived(BaseLink.java:84)
>                         10-12 17:36:27.053 29958 2983 E KDE/Device: at
>                         org.kde.kdeconnect.Backends.LanBackend.LanLink.receivedNetworkPacket(LanLink.java:255)
>                         10-12 17:36:27.053 29958 2983 E KDE/Device: at
>                         org.kde.kdeconnect.Backends.LanBackend.LanLink.lambda$reset$0$LanLink(LanLink.java:109)
>                         10-12 17:36:27.053 29958 2983 E KDE/Device: at
>                         org.kde.kdeconnect.Backends.LanBackend.-$$Lambda$LanLink$TabvaCXA5qL_bcJDmIELWusNThw.run(Unknown
>                         Source:4) 10-12 17:36:27.053 29958 2983 E
>                         KDE/Device: at
>                         java.lang.Thread.run(Thread.java:764) 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kdeconnect/attachments/20191017/4277c981/attachment.html>


More information about the KDEConnect mailing list