WiredTiger. Просто взгляд.[update]
WT_CONNECTION *Volume1Connection;
// WT_CONNECTION *Volume2Connection;
WT_CURSOR *cursor;
WT_SESSION *session;
const char *key, *value;
int ret;
if ((ret = wiredtiger_open("./Volume", NULL, "create", &Volume1Connection)) != 0 ||
(ret = Volume1Connection->open_session(Volume1Connection, NULL, NULL, &session)) != 0)
{
fprintf(stderr, "Error connecting to %s: %s\n",
".", wiredtiger_strerror(ret));
}
ret = session->create(session, "table:access", "key_format=S,value_format=S");
qDebug()<<ret;
ret = session->open_cursor(session, "table:access", NULL, NULL, &cursor);
QHash<QUuid, QUuid> TempArray;
for(int i=0; i<10; i++)
TempArray.insert(QUuid::createUuid(), QUuid::createUuid());
QHashIterator<QUuid, QUuid> i(TempArray);
while (i.hasNext())
{
i.next();
qDebug()<< i.key() << ": " << i.value();
cursor->set_key(cursor, i.key().toString().remove('{').remove('}').toLocal8Bit().data()); /* Insert a record. */
cursor->set_value(cursor,i.value().toString().remove('{').remove('}').toLocal8Bit().data());
ret = cursor->insert(cursor);
}
ret = cursor->reset(cursor); /* Restart the scan. */
while ((ret = cursor->next(cursor)) == 0)
{
cursor->get_key(cursor, &key);
cursor->get_value(cursor, &value);
printf("Got record: %s : %s\n", key, value);
}
i.toFront();
while (i.hasNext())
{
i.next();
qDebug()<< i.key() << ": " << i.value();
cursor->set_key(cursor, i.key().toString().remove('{').remove('}').toLocal8Bit().data());
const char* val;
if(cursor->search(cursor)==0)
{
cursor->get_value(cursor, &val);
qDebug()<<"---- key"<<i.key()<<"value from base"<<val;
}
else
qDebug()<<"key not found";
//cursor->search()
}
cursor->close(cursor);
ret = Volume1Connection->close(Volume1Connection, NULL);
quit();
В результате прогона программки получаем в базе мусор. Я как-то к этому не привык. Да и не хочется верить в то, что мотор не работает.
Конечно это я где-то что-то делаю не так.
Кто знает! Кто пробовал! Подсобите!
_______________
Разобрался. Строки для передачи курсору надо много тщательней готовить принимая во внимание особенности api.
Должен отметить, что это очень интересный инструмент. И хоть я и готов даже говорить о замене существующего (пусть и неспешного) комфорта постгреса, но явно использовать в некоторых местах буду.
Ну а там, видно будет.

