void pgbuilder::open_table(const table_spec &a_spec) { pgcommon::open_table_impl(a_spec); cur_row.resize(spec.columns().size()); cur_insert = std::string("insert_") + spec.name; db.prepare(cur_insert, insert_stmt(spec.name, spec.columns().size())); cur_work.reset(new pqxx::work(db)); }
void Parser::stmt() { lookahead = lex->getNextLex(); if (lookahead=="EOF") return; switch (lookahead[0]) { case 'C': create_stmt(); break; case 'I': insert_stmt(); break; case 'D': delete_stmt(); break; case 'S': query_stmt(); break; default: throw("Lexer error at line " + Data::toStr(lex->getLine())); } }
const Statement &ssql_stmt() { if (lookahead == CREATE) { return create_stmt(); } else if (lookahead == INSERT) { return insert_stmt(); } else if (lookahead == DELETE) { return delete_stmt(); } else if (lookahead == SELECT) { return query_stmt(); } else { throw ParseError("Syntax error"); } }
// // handle_messages // void CUTS_Testing_LoggingServerListener_i:: handle_messages (const char * hostname, const ::CUTS::UUID & test, const ::CUTS::LogMessages & msgs) { try { ACE_WRITE_GUARD (ACE_RW_Thread_Mutex, guard, this->mutex_); if (0 == this->database_) return; // Create a new query object. ADBC::Query * query = this->database_->create_query (); CUTS_Auto_Functor_T <ADBC::Query> auto_clean (query, &ADBC::Query::destroy); // Start a new transaction. query->execute_no_record ("BEGIN TRANSACTION"); // Prepare the statement for inserting messages. CUTS_Log_Message_Table msg_table (*this->database_); CUTS_Log_Message_Table::INSERT_STMT insert_stmt (*query); insert_stmt.prepare (); insert_stmt.bind_hostname (hostname); // Insert each message into the database. std::for_each (msgs.get_buffer (), msgs.get_buffer () + msgs.length (), insert_message (insert_stmt)); // End the current transaction. query->execute_no_record ("COMMIT"); } catch (const ADBC::Exception & ex) { ACE_ERROR ((LM_ERROR, ACE_TEXT ("%T (%t) - %M - %s (%N:%l)\n"), ex.message ().c_str ())); } catch (...) { ACE_ERROR ((LM_ERROR, ACE_TEXT ("%T (%t) - %M - caught unknown exception (%N:%l)\n"))); } ++this->messages_received_; }