From d067b867a2745081339a9357ef010d71905e0922 Mon Sep 17 00:00:00 2001 From: Eric House Date: Sat, 2 Feb 2019 21:49:50 -0800 Subject: [PATCH] stop storing fcm keys and similar data in postgres arrays Not sure why I was doing this, but it's not worth the trouble (e.g. stopping updates of other data to fix an android bug sending too many reregistration messages.) So now just use the first element of arrays, replacing what's there instead of prepending. Ideally those columns would not be arrays, but that's a harder change. --- xwords4/relay/dbmgr.cpp | 26 +++++++------------------- xwords4/relay/dbmgr.h | 2 +- 2 files changed, 8 insertions(+), 20 deletions(-) diff --git a/xwords4/relay/dbmgr.cpp b/xwords4/relay/dbmgr.cpp index 1bdec963c..8966ad446 100644 --- a/xwords4/relay/dbmgr.cpp +++ b/xwords4/relay/dbmgr.cpp @@ -451,14 +451,13 @@ DBMgr::ReregisterDevice( DevIDRelay relayID, const DevID* host, { QueryBuilder qb; qb.appendQueryf( "UPDATE " DEVICES_TABLE " SET " - "devTypes = array_prepend($$, devTypes), " - "devids = array_prepend($$, devids), " ) - + "devTypes[1] = $$, " + "devids[1] = $$, " ) .appendParam( host->m_devIDType ) .appendParam( host->m_devIDString.c_str() ); - formatUpdate( qb, true, desc, clientVersion, model, osVers, variant, relayID, - host->m_devIDString.c_str() ); + formatUpdate( qb, true, desc, clientVersion, model, osVers, variant, + relayID ); qb.finish(); execParams( qb ); } @@ -481,7 +480,7 @@ DBMgr::UpdateDevice( DevIDRelay relayID, const char* const desc, QueryBuilder qb; qb.appendQueryf( "UPDATE " DEVICES_TABLE " SET " ); formatUpdate( qb, false, desc, clientVersion, model, osVers, - variant, relayID, NULL ); + variant, relayID ); qb.finish(); execParams( qb ); } @@ -499,13 +498,9 @@ DBMgr::formatUpdate( QueryBuilder& qb, bool append, const char* const desc, int clientVersion, const char* const model, const char* const osVers, const char* const variant, - DevIDRelay relayID, const char* newDevID ) + DevIDRelay relayID ) { - if ( append ) { - qb.appendQueryf( "mtimes=array_prepend('now', mtimes)" ); // FIXME: too many - } else { - qb.appendQueryf( "mtimes[1]='now'" ); - } + qb.appendQueryf( "mtimes[1]='now'" ); if ( NULL != desc && '\0' != desc[0] ) { qb.appendQueryf( ", clntVers=$$" ) @@ -525,15 +520,8 @@ DBMgr::formatUpdate( QueryBuilder& qb, qb.appendQueryf( ", variant=$$" ) .appendParam( variant ); } - qb.appendQueryf( " WHERE id = $$" ) .appendParam( relayID ); - - if ( !!newDevID ) { - assert( append ); - qb.appendQueryf( " AND NOT devids[1] = $$" ) - .appendParam( newDevID ); - } } HostID diff --git a/xwords4/relay/dbmgr.h b/xwords4/relay/dbmgr.h index 51fcb76ab..74aa347bc 100644 --- a/xwords4/relay/dbmgr.h +++ b/xwords4/relay/dbmgr.h @@ -177,7 +177,7 @@ class DBMgr { void formatUpdate( QueryBuilder& qb, bool append, const char* const desc, int clientVersion, const char* const model, const char* const osVers, const char* const variant, - DevIDRelay relayID, const char* newDevID ); + DevIDRelay relayID ); PGconn* getThreadConn( void );