Index: dlgStep.cpp =================================================================== RCS file: /projects/pgadmin3/src/agent/dlgStep.cpp,v retrieving revision 1.17 retrieving revision 1.18 diff -Lsrc/agent/dlgStep.cpp -Lsrc/agent/dlgStep.cpp -u -w -r1.17 -r1.18 --- src/agent/dlgStep.cpp +++ src/agent/dlgStep.cpp @@ -168,7 +168,7 @@ if (jobId) jstjobid = NumToStr(jobId); else - jstjobid = wxT(""); + jstjobid = wxT(""); if (!cbDatabase->GetSelection()) db = wxT("NULL"); @@ -176,7 +176,7 @@ db = qtString(cbDatabase->GetValue()); sql = wxT("INSERT INTO pgagent.pga_jobstep (jstid, jstjobid, jstname, jstdesc, jstenabled, jstkind, jstonerror, jstcode, jstdbname)\n") - wxT("SELECT , ") + jstjobid + wxT(", ") + qtString(name) + wxT(", ") + qtString(txtComment->GetValue()) + wxT(", ") + wxT("SELECT , ") + jstjobid + wxT(", ") + qtString(name) + wxT(", ") + qtString(txtComment->GetValue()) + wxT(", ") + BoolToStr(chkEnabled->GetValue()) + wxT(", ") + qtString(kind) + wxT(", ") + qtString(onerror) + wxT(", ") + qtString(sqlBox->GetText()) + wxT(", ") + db; } Index: dlgSchedule.cpp =================================================================== RCS file: /projects/pgadmin3/src/agent/dlgSchedule.cpp,v retrieving revision 1.20 retrieving revision 1.21 diff -Lsrc/agent/dlgSchedule.cpp -Lsrc/agent/dlgSchedule.cpp -u -w -r1.20 -r1.21 --- src/agent/dlgSchedule.cpp +++ src/agent/dlgSchedule.cpp @@ -210,11 +210,11 @@ if (jobId) jscjobid = NumToStr(jobId); else - jscjobid = wxT(""); + jscjobid = wxT(""); // Build the various arrays of values sql = wxT("INSERT INTO pgagent.pga_schedule (jscid, jscjobid, jscname, jscdesc, jscminutes, jschours, jscweekdays, jscmonthdays, jscmonths, jscenabled, jscstart, jscend)\n") - wxT("VALUES(, ") + jscjobid + wxT(", ") + qtString(name) + wxT(", ") + qtString(txtComment->GetValue()) + wxT(", ") + wxT("VALUES(, ") + jscjobid + wxT(", ") + qtString(name) + wxT(", ") + qtString(txtComment->GetValue()) + wxT(", ") + wxT("'") + ChkListBox2PgArray(chkMinutes) + wxT("', ") + wxT("'") + ChkListBox2PgArray(chkHours) + wxT("', ") + wxT("'") + ChkListBox2PgArray(chkWeekdays) + wxT("', ") Index: dlgJob.cpp =================================================================== RCS file: /projects/pgadmin3/src/agent/dlgJob.cpp,v retrieving revision 1.17 retrieving revision 1.18 diff -Lsrc/agent/dlgJob.cpp -Lsrc/agent/dlgJob.cpp -u -w -r1.17 -r1.18 --- src/agent/dlgJob.cpp +++ src/agent/dlgJob.cpp @@ -246,9 +246,15 @@ lstSteps->SetItem(pos, 1, step.GetComment()); if (lstSteps->GetText(pos, 3).IsEmpty()) - lstSteps->SetItem(pos, 2, step.GetInsertSql()); + { + wxString *stepSql = new wxString(step.GetInsertSql()); + lstSteps->SetItemData(pos, (long)stepSql); + } else - lstSteps->SetItem(pos, 2, step.GetUpdateSql()); + { + wxString *stepSql = new wxString(step.GetUpdateSql()); + lstSteps->SetItemData(pos, (long)stepSql); + } CheckChange(); } @@ -270,7 +276,8 @@ if (step.Go(true) >= 0) { int pos = lstSteps->AppendItem(PGAICON_STEP, step.GetName(), step.GetComment()); - lstSteps->SetItem(pos, 2, step.GetInsertSql()); + wxString *stepSql = new wxString(step.GetInsertSql()); + lstSteps->SetItemData(pos, (long)stepSql); CheckChange(); } } @@ -278,6 +285,7 @@ void dlgJob::OnRemoveStep(wxCommandEvent &ev) { + delete (wxString *)lstSteps->GetItemData(lstSteps->GetSelection()); lstSteps->DeleteCurrentItem(); btnChangeStep->Disable(); @@ -309,9 +317,15 @@ lstSchedules->SetItem(pos, 1, schedule.GetComment()); if (lstSchedules->GetText(pos, 3).IsEmpty()) - lstSchedules->SetItem(pos, 2, schedule.GetInsertSql()); + { + wxString *scheduleSql = new wxString(schedule.GetInsertSql()); + lstSchedules->SetItemData(pos, (long)scheduleSql); + } else - lstSchedules->SetItem(pos, 2, schedule.GetUpdateSql()); + { + wxString *scheduleSql = new wxString(schedule.GetUpdateSql()); + lstSchedules->SetItemData(pos, (long)scheduleSql); + } CheckChange(); } @@ -326,7 +340,8 @@ if (schedule.Go(true) >= 0) { int pos = lstSchedules->AppendItem(PGAICON_SCHEDULE, schedule.GetName(), schedule.GetComment()); - lstSchedules->SetItem(pos, 2, schedule.GetInsertSql()); + wxString *scheduleSql = new wxString(schedule.GetInsertSql()); + lstSchedules->SetItemData(pos, (long)scheduleSql); CheckChange(); } } @@ -334,6 +349,7 @@ void dlgJob::OnRemoveSchedule(wxCommandEvent &ev) { + delete (wxString *)lstSchedules->GetItemData(lstSchedules->GetSelection()); lstSchedules->DeleteCurrentItem(); btnChangeSchedule->Disable(); @@ -350,7 +366,7 @@ if (!job) { sql = wxT("INSERT INTO pgagent.pga_job (jobid, jobjclid, jobname, jobdesc, jobenabled)\n") - wxT("SELECT , jcl.jclid, ") + qtString(GetName()) + + wxT("SELECT , jcl.jclid, ") + qtString(GetName()) + wxT(", ") + qtString(txtComment->GetValue()) + wxT(", ") + BoolToStr(chkEnabled->GetValue()) + wxT("\n") wxT(" FROM pgagent.pga_jobclass jcl WHERE jclname=") + qtString(cbJobclass->GetValue()); } @@ -416,10 +432,14 @@ if (index >= 0) tmpSteps.RemoveAt(index); } - str=lstSteps->GetText(pos, 2); + + if(lstSteps->GetItemData(pos)) + { + str=*(wxString *)lstSteps->GetItemData(pos); if (!str.IsEmpty()) sql += str + wxT(";\n"); } + } for (index = 0 ; index < (int)tmpSteps.GetCount() ; index++) { @@ -437,10 +457,13 @@ if (index >= 0) tmpSchedules.RemoveAt(index); } - str=lstSchedules->GetText(pos, 2); + if(lstSchedules->GetItemData(pos)) + { + str=*(wxString *)lstSchedules->GetItemData(pos); if (!str.IsEmpty()) sql += str + wxT(";\n"); } + } for (index = 0 ; index < (int)tmpSchedules.GetCount() ; index++) { Index: dlgProperty.cpp =================================================================== RCS file: /projects/pgadmin3/src/ui/dlgProperty.cpp,v retrieving revision 1.118 retrieving revision 1.119 diff -Lsrc/ui/dlgProperty.cpp -Lsrc/ui/dlgProperty.cpp -u -w -r1.118 -r1.119 --- src/ui/dlgProperty.cpp +++ src/ui/dlgProperty.cpp @@ -1312,20 +1312,36 @@ sql=GetInsertSql(); if (!sql.IsEmpty()) { - if (sql.Contains(wxT(""))) + int pos; + long jobId, schId, stpId; + if (sql.Contains(wxT(""))) { - if (sql.StartsWith(wxT("INSERT INTO pgagent.pga_job"))) - recId=StrToLong(connection->ExecuteScalar(wxT("SELECT nextval('pgagent.pga_job_jobid_seq');"))); - else if (sql.StartsWith(wxT("INSERT INTO pgagent.pga_schedule"))) - recId=StrToLong(connection->ExecuteScalar(wxT("SELECT nextval('pgagent.pga_schedule_jscid_seq');"))); - else if (sql.StartsWith(wxT("INSERT INTO pgagent.pga_jobstep"))) - recId=StrToLong(connection->ExecuteScalar(wxT("SELECT nextval('pgagent.pga_jobstep_jstid_seq');"))); + jobId=StrToLong(connection->ExecuteScalar(wxT("SELECT nextval('pgagent.pga_job_jobid_seq');"))); + while ((pos=sql.Find(wxT(""))) >= 0) + sql = sql.Left(pos) + NumToStr(jobId) + sql.Mid(pos+7); + } - int pos; - while ((pos=sql.Find(wxT(""))) >= 0) - sql = sql.Left(pos) + NumToStr(recId) + sql.Mid(pos+4); + if (sql.Contains(wxT(""))) + { + schId=StrToLong(connection->ExecuteScalar(wxT("SELECT nextval('pgagent.pga_schedule_jscid_seq');"))); + while ((pos=sql.Find(wxT(""))) >= 0) + sql = sql.Left(pos) + NumToStr(schId) + sql.Mid(pos+7); } + if (sql.Contains(wxT(""))) + { + stpId=StrToLong(connection->ExecuteScalar(wxT("SELECT nextval('pgagent.pga_jobstep_jstid_seq');"))); + while ((pos=sql.Find(wxT(""))) >= 0) + sql = sql.Left(pos) + NumToStr(stpId) + sql.Mid(pos+7); + } + + // OK, so what are we inserting? We need to set recId appropriately. + if (sql.StartsWith(wxT("INSERT INTO pgagent.pga_job"))) + recId = jobId; + else if (sql.StartsWith(wxT("INSERT INTO pgagent.pga_schedule"))) + recId = schId; + else if (sql.StartsWith(wxT("INSERT INTO pgagent.pga_jobstep"))) + recId = stpId; pgSet *set=connection->ExecuteSet(sql); if (set) @@ -1343,8 +1359,23 @@ if (!sql.IsEmpty()) { int pos; - while ((pos=sql.Find(wxT(""))) >= 0) - sql = sql.Left(pos) + NumToStr(recId) + sql.Mid(pos+4); + while ((pos=sql.Find(wxT(""))) >= 0) + sql = sql.Left(pos) + NumToStr(recId) + sql.Mid(pos+7); + + long newId; + if (sql.Contains(wxT(""))) + { + newId=StrToLong(connection->ExecuteScalar(wxT("SELECT nextval('pgagent.pga_schedule_jscid_seq');"))); + while ((pos=sql.Find(wxT(""))) >= 0) + sql = sql.Left(pos) + NumToStr(newId) + sql.Mid(pos+7); + } + + if (sql.Contains(wxT(""))) + { + newId=StrToLong(connection->ExecuteScalar(wxT("SELECT nextval('pgagent.pga_jobstep_jstid_seq');"))); + while ((pos=sql.Find(wxT(""))) >= 0) + sql = sql.Left(pos) + NumToStr(newId) + sql.Mid(pos+7); + } if (!connection->ExecuteVoid(sql)) {