Skip to content

Commit

Permalink
Support LOB in SyncTriggers.
Browse files Browse the repository at this point in the history
  • Loading branch information
mmichalek committed Oct 29, 2015
1 parent 908b233 commit dc9e2ce
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 39 deletions.
76 changes: 38 additions & 38 deletions symmetric-client-clib/src/core/JobManager.c
Expand Up @@ -47,44 +47,44 @@ void SymJobManager_invoke(SymJobManager *this) {
this->engine->syncTriggers(this->engine);
time(&this->lastSyncTriggersTime);
}
if (SymJobManager_shouldRun(this, SYM_PARAMETER_START_ROUTE_JOB, SYM_PARAMETER_ROUTE_PERIOD_MS, this->lastRouteTime)) {
SymLog_info("ROUTE ============================)");
this->engine->route(this->engine);
time(&this->lastRouteTime);
}
if (SymJobManager_shouldRun(this, SYM_PARAMETER_START_PUSH_JOB, SYM_PARAMETER_PUSH_PERIOD_MS, this->lastPushTime)) {
SymRemoteNodeStatuses *pushStatus = this->engine->push(this->engine);
if (pushStatus->wasBatchProcessed(pushStatus)
|| pushStatus->wasDataProcessed(pushStatus)) {
// Only run heartbeat after a successful push to avoid queueing up lots of offline heartbeats.
if (SymJobManager_shouldRun(this, SYM_PARAMETER_START_HEARTBEAT_JOB, SYM_PARAMETER_HEARTBEAT_JOB_PERIOD_MS, this->lastHeartbeatTime)) {
SymLog_info("HEARTBEAT ============================)");
this->engine->heartbeat(this->engine, 0);
time(&this->lastHeartbeatTime);
}
}
time(&this->lastPushTime);
}
if (SymJobManager_shouldRun(this, SYM_PARAMETER_START_PULL_JOB, SYM_PARAMETER_PULL_PERIOD_MS, this->lastPullTime)) {
SymLog_info("PULL ============================)");
this->engine->pull(this->engine);
time(&this->lastPullTime);
}
if (SymJobManager_shouldRun(this, SYM_PARAMETER_START_PURGE_JOB, SYM_PARAMETER_PURGE_PERIOD_MS, this->lastPurgeTime)) {
SymLog_info("PURGE ============================)");
this->engine->purge(this->engine);
time(&this->lastPurgeTime);
}
if (1) { // TODO.
SymLog_info("OFFLINE PUSH ============================)");
this->engine->offlinePushService->pushData(this->engine->offlinePushService);
//time(&this->lastPurgeTime);
}
if (1) { // TODO.
SymLog_info("OFFLINE PULL ============================)");
this->engine->offlinePullService->pullData(this->engine->offlinePullService);
//time(&this->lastPurgeTime);
}
// if (SymJobManager_shouldRun(this, SYM_PARAMETER_START_ROUTE_JOB, SYM_PARAMETER_ROUTE_PERIOD_MS, this->lastRouteTime)) {
// SymLog_info("ROUTE ============================)");
// this->engine->route(this->engine);
// time(&this->lastRouteTime);
// }
// if (SymJobManager_shouldRun(this, SYM_PARAMETER_START_PUSH_JOB, SYM_PARAMETER_PUSH_PERIOD_MS, this->lastPushTime)) {
// SymRemoteNodeStatuses *pushStatus = this->engine->push(this->engine);
// if (pushStatus->wasBatchProcessed(pushStatus)
// || pushStatus->wasDataProcessed(pushStatus)) {
// // Only run heartbeat after a successful push to avoid queueing up lots of offline heartbeats.
// if (SymJobManager_shouldRun(this, SYM_PARAMETER_START_HEARTBEAT_JOB, SYM_PARAMETER_HEARTBEAT_JOB_PERIOD_MS, this->lastHeartbeatTime)) {
// SymLog_info("HEARTBEAT ============================)");
// this->engine->heartbeat(this->engine, 0);
// time(&this->lastHeartbeatTime);
// }
// }
// time(&this->lastPushTime);
// }
// if (SymJobManager_shouldRun(this, SYM_PARAMETER_START_PULL_JOB, SYM_PARAMETER_PULL_PERIOD_MS, this->lastPullTime)) {
// SymLog_info("PULL ============================)");
// this->engine->pull(this->engine);
// time(&this->lastPullTime);
// }
// if (SymJobManager_shouldRun(this, SYM_PARAMETER_START_PURGE_JOB, SYM_PARAMETER_PURGE_PERIOD_MS, this->lastPurgeTime)) {
// SymLog_info("PURGE ============================)");
// this->engine->purge(this->engine);
// time(&this->lastPurgeTime);
// }
// if (1) { // TODO.
// SymLog_info("OFFLINE PUSH ============================)");
// this->engine->offlinePushService->pushData(this->engine->offlinePushService);
// //time(&this->lastPurgeTime);
// }
// if (1) { // TODO.
// SymLog_info("OFFLINE PULL ============================)");
// this->engine->offlinePullService->pullData(this->engine->offlinePullService);
// //time(&this->lastPurgeTime);
// }
}

void SymJobManager_startJobs(SymJobManager *this) {
Expand Down
Expand Up @@ -31,23 +31,31 @@ char * SymSqliteTriggerTemplate_fillOutColumnTemplate(SymSqliteTriggerTemplate *
char *templateToUse;

switch (column->sqlType) {
case SYM_SQL_TYPE_BOOLEAN:
case SYM_SQL_TYPE_TINYINT:
case SYM_SQL_TYPE_SMALLINT:
case SYM_SQL_TYPE_INTEGER:
case SYM_SQL_TYPE_BIGINT:
case SYM_SQL_TYPE_FLOAT:
case SYM_SQL_TYPE_REAL:
case SYM_SQL_TYPE_DOUBLE:
case SYM_SQL_TYPE_NUMERIC:
case SYM_SQL_TYPE_DECIMAL:
case SYM_SQL_TYPE_REAL:
templateToUse = "case when %s.%s is null then '' else ('\"' || cast(%s.%s as varchar) || '\"') end";
break;
case SYM_SQL_TYPE_CHAR:
case SYM_SQL_TYPE_NCHAR:
case SYM_SQL_TYPE_VARCHAR:
case SYM_SQL_TYPE_NVARCHAR:
case SYM_SQL_TYPE_CLOB:
case SYM_SQL_TYPE_LONGVARCHAR:
case SYM_SQL_TYPE_LONGNVARCHAR:
templateToUse = "case when %s.%s is null then '' else '\"' || replace(replace(%s.%s,'\\','\\\\'),'\"','\\\"') || '\"' end";
break;
case SYM_SQL_TYPE_BLOB:
case SYM_SQL_TYPE_LONGVARBINARY:
templateToUse = "case when %s.%s is null then '' else '\"' || replace(replace(hex(%s.%s),'\\','\\\\'),'\"','\\\"') || '\"' end ";
break;
default:
templateToUse = NULL;
SymLog_error("Unknown sqlType %d", column->sqlType);
Expand Down

0 comments on commit dc9e2ce

Please sign in to comment.