The data shown in the cached values clearly changes after the update, here are the previous and after values:
dates previous
a:1:{i:1058893055930;a:5:{s:4:"type";s:8:"birthday";s:10:"visibility";s:8:"unlisted";s:4:"date";s:10:"2013-11-20";s:5:"order";i:0;s:9:"preferred";b:0;}}
dates after
a:1:{s:32:"d48e7b5f0495de9616c62604483ced99";a:6:{s:4:"type";s:8:"birthday";s:10:"visibility";s:8:"unlisted";s:4:"date";s:10:"2013-10-31";s:2:"id";s:3:"434";s:5:"order";i:0;s:9:"preferred";b:0;}}
And pretty much the same with email, phone, addresses.
In the case of a contact that shows the dates correctly (not showing unlisted dates), the serials are:
date previous
a:1:{s:32:"4889aec3304e1d0fa03ecaea16960a1c";a:6:{s:4:"type";s:8:"birthday";s:10:"visibility";s:8:"unlisted";s:4:"date";s:10:"2013-05-21";s:2:"id";s:3:"445";s:5:"order";i:0;s:9:"preferred";b:0;}}
date after
a:1:{s:32:"2c8e778e108d48c298c1157796ca44b9";a:6:{s:4:"type";s:8:"birthday";s:10:"visibility";s:8:"unlisted";s:4:"date";s:10:"2013-05-21";s:2:"id";s:3:"445";s:5:"order";i:0;s:9:"preferred";b:0;}}
So it is quite obvious that the error comes from the way that the serialize has been made: some of the data has been storaged as integer ?!?!
That would explain why the update solves the problem.
We have confirmed that the new values stored (new contact) are done as string, but if we repeat the same process: make a new contact (public with one unlisted date), save it, we get this cached date:
a:1:{s:12:"439828048886";a:5:{s:4:"type";s:8:"birthday";s:10:"visibility";s:8:"unlisted";s:4:"date";s:10:"2013-09-25";s:5:"order";i:0;s:9:"preferred";b:0;}}
It shows perfectly, but if we update again (no modifications) the cached value changes to:
a:1:{s:32:"74469e7a4f9b2c5ece4e79227cd68b72";a:6:{s:4:"type";s:8:"birthday";s:10:"visibility";s:8:"unlisted";s:4:"date";s:10:"2013-09-25";s:2:"id";s:3:"512";s:5:"order";i:0;s:9:"preferred";b:0;}}
If you put one line over the other you can see that a couple of new string datas are added in the update: the strings “id” and “512”, which is the id value in the wp_connections_date table. The frontend works perfectly both previously and afterwards the update, but that change appears. Should it be that way?
We still think that it is related somehow to the upgrade, but anyway this gives us a clear way to solve the problem: do you have any php code for mass updating?