wxLongLong TIniFile::ReadLongLong(const wxString &Section, const wxString &Ident, wxLongLong Default) { wxString str = ReadString(Section, Ident, Default.ToString()); wxLongLong lng = StrToLongLong(str); return lng; }
bool dlgSequence::doesOverflowBigInt(const wxString &str, bool emptyAllowed) { if (emptyAllowed && str.IsEmpty()) return false; if (NumToStr(StrToLongLong(str)) != str) return true; return false; }
int main(int argc, char **argv) { long val; long long val2; int ret; if (argc < 2) { printf("Usage: %s str [base]\n", argv[0]); return -1; } printf("GetCycleCount: %lld, GetMsCount: %lld, GetSecCount: %lld\n", GetCycleCount(), GetMsCount(), GetSecCount()); printf("GetCycleCount: %lld, GetMsCount: %lld, GetSecCount: %lld\n", GetCycleCount(), GetMsCount(), GetSecCount()); ret = StrToLong(argv[1], &val, (argc < 3) ? 0 : atoi(argv[2])); if (ret < 0) { printf("StrToLong failed. [ret: %d]\n", ret); } else { printf("%ld\n", val); } ret = StrToLongLong(argv[1], &val2, (argc < 3) ? 0 : atoi(argv[2])); if (ret < 0) { printf("StrToLongLong failed. [ret: %d]\n", ret); } else { printf("%lld\n", val2); } usleep(1000 * 1000); printf("GetCycleCount: %lld, GetMsCount: %lld, GetSecCount: %lld\n", GetCycleCount(), GetMsCount(), GetSecCount()); printf("GetCycleCount: %lld, GetMsCount: %lld, GetSecCount: %lld\n", GetCycleCount(), GetMsCount(), GetSecCount()); return 0; }
wxString dlgSequence::GetSql() { wxString sql, name; if (sequence) { // edit mode name = GetName(); if (connection->BackendMinimumVersion(8, 3)) AppendNameChange(sql, wxT("SEQUENCE ") + sequence->GetQuotedFullIdentifier()); else AppendNameChange(sql, wxT("TABLE ") + sequence->GetQuotedFullIdentifier()); if (connection->BackendMinimumVersion(8, 4)) AppendOwnerChange(sql, wxT("SEQUENCE ") + schema->GetQuotedPrefix() + qtIdent(name)); else AppendOwnerChange(sql, wxT("TABLE ") + schema->GetQuotedPrefix() + qtIdent(name)); // This is where things get hairy. Per some thought by Horvath Gabor, // we need to adjust the min/max sequence values, and the the current // value per the rules: // // 1 Any ALTER SEQUENCE MIN/MAXVALUE statements that widen the range // 2 SETVAL // 3 Any ALTER SEQUENCE MIN/MAXVALUE statements that narrow the range. // // We'll change any other options at the end. wxString tmp; // MIN/MAX changes that widen the range. if (connection->BackendMinimumVersion(7, 4)) { tmp = wxEmptyString; if (txtMin->GetValue().IsEmpty()) tmp += wxT("\n NO MINVALUE"); else if (StrToLongLong(txtMin->GetValue()) < sequence->GetMinValue()) tmp += wxT("\n MINVALUE ") + txtMin->GetValue(); if (txtMax->GetValue().IsEmpty()) tmp += wxT("\n NO MAXVALUE"); else if (StrToLongLong(txtMax->GetValue()) > sequence->GetMaxValue()) tmp += wxT("\n MAXVALUE ") + txtMax->GetValue(); if (!tmp.IsEmpty()) { sql += wxT("ALTER SEQUENCE ") + schema->GetQuotedPrefix() + qtIdent(name) + tmp + wxT(";\n"); } } // The new sequence value if (txtStart->GetValue() != sequence->GetLastValue().ToString()) sql += wxT("SELECT setval('") + qtIdent(schema->GetName()) + wxT(".") + qtIdent(name) + wxT("', ") + txtStart->GetValue() + wxT(", true);\n"); // Min/Max changes that narrow the ranges, as well as other changes. if (connection->BackendMinimumVersion(7, 4)) { tmp = wxEmptyString; if (txtIncrement->GetValue() != sequence->GetIncrement().ToString()) tmp += wxT("\n INCREMENT ") + txtIncrement->GetValue(); if ((!txtMin->GetValue().IsEmpty()) && StrToLongLong(txtMin->GetValue()) > sequence->GetMinValue()) tmp += wxT("\n MINVALUE ") + txtMin->GetValue(); if ((!txtMax->GetValue().IsEmpty()) && StrToLongLong(txtMax->GetValue()) < sequence->GetMaxValue()) tmp += wxT("\n MAXVALUE ") + txtMax->GetValue(); if (txtCache->GetValue() != sequence->GetCacheValue().ToString()) tmp += wxT("\n CACHE ") + txtCache->GetValue(); if (chkCycled->GetValue() != sequence->GetCycled()) { if (chkCycled->GetValue()) tmp += wxT("\n CYCLE"); else tmp += wxT("\n NO CYCLE"); } if (!tmp.IsEmpty()) { sql += wxT("ALTER SEQUENCE ") + schema->GetQuotedPrefix() + qtIdent(name) + tmp + wxT(";\n"); } if (connection->BackendMinimumVersion(8, 1)) AppendSchemaChange(sql, wxT("SEQUENCE ") + schema->GetQuotedPrefix() + qtIdent(name)); } } else { name = qtIdent(cbSchema->GetValue()) + wxT(".") + qtIdent(GetName()); // create mode sql = wxT("CREATE SEQUENCE ") + name; if (chkCycled->GetValue()) sql += wxT(" CYCLE"); AppendIfFilled(sql, wxT("\n INCREMENT "), txtIncrement->GetValue()); AppendIfFilled(sql, wxT("\n START "), txtStart->GetValue()); AppendIfFilled(sql, wxT("\n MINVALUE "), txtMin->GetValue()); AppendIfFilled(sql, wxT("\n MAXVALUE "), txtMax->GetValue()); AppendIfFilled(sql, wxT("\n CACHE "), txtCache->GetValue()); sql += wxT(";\n"); if (cbOwner->GetGuessedSelection() > 0) { if (connection->BackendMinimumVersion(8, 4)) { AppendOwnerChange(sql, wxT("SEQUENCE ") + qtIdent(cbSchema->GetValue()) + wxT(".") + qtIdent(GetName())); } else { AppendOwnerChange(sql, wxT("TABLE ") + qtIdent(cbSchema->GetValue()) + wxT(".") + qtIdent(GetName())); } } } if (!connection->BackendMinimumVersion(8, 2)) sql += GetGrant(wxT("arwdRxt"), wxT("TABLE ") + qtIdent(cbSchema->GetValue()) + wxT(".") + qtIdent(GetName())); else sql += GetGrant(wxT("rwU"), wxT("TABLE ") + qtIdent(cbSchema->GetValue()) + wxT(".") + qtIdent(GetName())); AppendComment(sql, wxT("SEQUENCE ") + qtIdent(cbSchema->GetValue()) + wxT(".") + qtIdent(GetName()), sequence); if (seclabelPage && connection->BackendMinimumVersion(9, 1)) sql += seclabelPage->GetSqlForSecLabels(wxT("SEQUENCE"), qtIdent(cbSchema->GetValue()) + wxT(".") + qtIdent(GetName())); return sql; }