====== Drivers ====== =====SQLite Driver ===== * **Aborted** due to syntax constraints. It does not support all the SQL commands TerraLib needs (left join, right join). * [[software:art:driver_sqlite|Discussions]] about the implementation of a TerraLib driver for SQLite. ===== Connection Through ODBC ===== * {{software:art:teodbc.pdf|ODBC strategy}} plans for an access to the TL data base using ODBC aiming a common solution for Linux and Windows * {{:software:art:apresentacao-tejdbc.pdf|apresentação}} do TeJDBC =====Postgre===== ====Echoing Messages==== all databasde operations (createDB, createLayer etc) are echoing messages such as: > th = createTheme(lpolygons, "poligons", vi="view") > NOTA: CREATE TABLE / PRIMARY KEY criará índice implícito > "te_collection_2_pkey" na tabela "te_collection_2" > NOTA: CREATE TABLE criará sequência implícita > "te_collection_2_aux_unique_id_seq" para coluna serial > "te_collection_2_aux.unique_id" > NOTA: CREATE TABLE / PRIMARY KEY criará índice implícito > "te_collection_2_aux_pkey" na tabela "te_collection_2_aux" How to remove them? ====Permissions==== Henrique: drop user acho que vai funcionar sem problemas, o conceito do addUser é que é diferente do MySQL, uma vez que é necessário ter o usuário criado pelo CREATE USER antes de usar o GRAN ALL, outro detalhe disto é que no GRANT ALL do pg é que ele aparentemente não aceita o @'localhost', @'%', etc... O getPermission não vai funcionar porque está vinculado à tabelas do MySQL se não me engano, no pg não tem todas as informa~ções de usuario que tem no MySQL, podem ser visualizadas com "SELECT * FROM pg_user". Ontem mexi um pouco no código do aRTconn.cpp, mas ainda falta algumas coisas. Coloquei um pouco de informação aqui: http://www.leg.ufpr.br/doku.php/dicas:postgres Henrique: Segue em anexo, uma versão DropUser e do AddPermission, não tive como testar ainda. SEXP aRTconn::DropUser(SEXP data) { string user = GET_STRING_ELEMENT(data, "user" ); /*Drop user no postgres nao tem o '@localhost', etc.. *bool remote = GET_BOOL_ELEMENT (data, "remote" ); *string host = GET_STRING_ELEMENT(data, "host" );*/ PrintSilent("Dropping user \'%s\' ... ", user.c_str()); TeDatabase* db = NewTeDatabase(); if( !db -> connect(Host, User, Password, "", Port)) error("Could not connect\n"); stringstream stream; stream << "drop user " << user; switch(Type) { case aRTmySQL: if(!remote && host == "") stream << "@localhost"; else if(host != "") stream << "@" << host; else stream << "@\'%\'"; } stream << ";"; string sql = StreamToChar(stream); // cout << sql << endl; if( !db->execute(sql) ) { string err = db->errorMessage(); delete db; error( err.c_str() ); } delete db; PrintSilentYes; return RNULL; } SEXP aRTconn::AddPermission(SEXP data) // only works in MySQL! { string user = GET_STRING_ELEMENT(data, "user" ); bool remote = GET_BOOL_ELEMENT (data, "remote" ); string host = GET_STRING_ELEMENT(data, "host" ); string pass = GET_STRING_ELEMENT(data, "pass" ); string database = GET_STRING_ELEMENT(data, "database" ); string previlege = GET_STRING_ELEMENT(data, "previlege"); PrintSilent("Adding permissions to user \'%s\' ... ", user.c_str()); TeDatabase* db = NewTeDatabase(); if( !db -> connect(Host, User, Password, "", Port)) error("Could not connect\n"); stringstream stream; switch(Type) { case aRTmysql: stream << "GRANT " <execute(sql) ) { string err = db->errorMessage(); delete db; error( err.c_str() ); } delete db; PrintSilentYes; return RNULL; }