Old kexi bug still exists?

So I was looking into using something other than phpMyAdmin for editing my databases, so I looked into kexi.  When I used the import "Structure and Data" option, it just populates the tables with empty values.
After some searching, I found that this use to be an issue a while back: Problem and Resolution.
Can anyone else confirm this as a still-existing (or reoccurring) bug?
Or, am I just messing something up along the way?
Thanks.

I hope someone can help me... it is very important and i am desperate for answers (BUMP)

Similar Messages

  • Index with "or" clause (BUG still exists?)

    The change log for 2.3.10 mentions "Fixed a bug that caused incorrect query plans to be generated for predicates that used the "or" operator in conjunction with indexes [#15328]."
    But looks like the Bug still exists.
    I am listing the steps to-repro. Let me know if i have missed something (or if the bug needs to be fixed)
    DATA
    dbxml> openContainer test.dbxml
    dbxml> getDocuments
    2 documents found
    dbxml> print
    <node><value>a</value></node>
    <node><value>b</value></node>
    INDEX (just one string equality index on node "value")
    dbxml> listIndexes
    Index: unique-node-metadata-equality-string for node {http://www.sleepycat.com/2002/dbxml}:name
    Index: node-element-equality-string for node {}:value
    2 indexes found.
    QUERY
    setVerbose 2 2
    preload test.dbxml
    query 'let $temp := fn:compare("test", "test") = 0
    let $results := for $i in collection("test.dbxml")
    where ($temp or $i/node[value = ("a")])
    return $i
    return <out>{$temp}{$results}</out>'
    When $temp is true i expected the result set to contain both the records, but that was not the case with the index. It works well when there is no index!
    Result WITH INDEX
    dbxml> print
    <out>true<node><value>a</value></node></out>
    Result WITHOUT INDEX
    dbxml> print
    <out>true<node><value>a</value></node><node><value>b</value></node></out>

    Hi Vijay,
    This is a completely different bug, relating to predicate expressions that do not examine nodes. Please try the following patch, to see if it fixes this bug for you:
    --- dbxml-2.3.10-original/dbxml/src/dbxml/optimizer/QueryPlanGenerator.cpp     2007-04-18 10:05:24.000000000 +0100
    +++ dbxml-2.3.10/dbxml/src/dbxml/optimizer/QueryPlanGenerator.cpp     2007-08-08 11:32:10.000000000 +0100
    @@ -1566,11 +1572,12 @@
         else if(name == Or::name) {
              UnionQP *unionOp = new (&memMgr_) UnionQP(&memMgr_);
    +          result.operation = unionOp;
              for(VectorOfASTNodes::iterator i = args.begin(); i != args.end(); ++i) {
                   PathResult ret = generate(*i, ids);
                   unionOp->addArg(ret.operation);
    +               if(ret.operation == 0) result.operation = 0;
    -          result.operation = unionOp;
         // These operators use the presence of the node arguments, not their valueJohn

  • Does the "Warning! Not Enough Memory" bug still exist in Logic 8?

    Hello everyone,
    I'm wondering if the dreaded "warning, not enough memory" bug still exists in Logic 8. Here is a detailed account of the bug from Logic 7: http://discussions.apple.com/thread.jspa?messageID=767597&#767597
    If this is fixed, I'm seriously considering upgrading mid-project! The film score I'm working on has many doubling parts that I'd like to edit at the same time in the matrix editor. However, editing multiple parts in the matrix editor seems provoke the little bugger, and I've already been bitten a few times in this project already. The only solution I've found is to stay clear of editing multiple parts at once (i.e. edit each parts individually, which obviously takes more time) or save before editing and hope I dont get bit.
    I would LOVE to hear a report that this bug has been exterminated, and perhaps may upgrade mid project if thats the case.
    Thanks in advance for your reply!

    Heya,
    I'm not familiar with the bug you're talking about. But would, as a fellow film composer, strongly urge you against the mid project switch.
    I loaded in LP8 and ofcourse had a look at what it was all about, and it's really really fantastic. It also seems very stable. I fortunately have a side project that I am working on so switched to LP8 for that. Whilst I'm thankful to get my head around a very new approach for logic, I'm also thankful that I have this side project as it has illuminated a multitude of problems that exist with LP8 that would make any scoring process a bit of a headache to say the least. The main one being that if you don't have a very very powerful mac (I'm prepping a really fully loaded 8 core) you are not going to get anywhere near the performance out of Logic as you do with 7. This is a bottom up overhaul and it needs hardware to match. Heck even my 30" cinema display seems cramped and insubstantial on this new version. I would be so bold to say hold off until you have a hearty new mac and at least 8.2 is released IMHO but maybe try and get on it onto a smaller project to familiarize yourself before hand.

  • PDF From MS Word 2010 Reported Bug Still Exists

    I need to create a PDF file today that contains images in a MS Word 2010 document.  There is a bug in Acrobat XI Professional  that I reported months ago.  This bug is still here, and now I need help.  Can anyone tell me what I can do to fix this issue?
    Here is what happens, and I just reproduced this problem I found awhile back.  As I stated, I did report it, but this issue is still here!
    I am creating a user guide for software.  I insert BMP images that are screen shots.  On any page where a BMP image exists within Word, the resulting PDF document does not allow selecting of text in Acrobat Reader XI.  The selection goes totally insane and highlights random text through the entire page.  This is a software defect for certain.
    My question is can I easily fix this with minimal time?  I had to fix this last time by removing all images from MS Word and instead pasting the image in Acrobat XI.  When I do this, selecting text works.  The problem with this bug work-around is that this take lots of time (that I do not have).
    Help please???

    I found something even better.  There is a non Adobe PDF creator on my office computer that correctly creates a PDF.   The issue is within PDF creation, because I am using Acrobat Reader XI and selecting text with no problem at all.
    I did not have to change a thing other than not use Adobe Acrobat Professional to create the PDF.  The software that works correctly where Adobe's own fails is called PDF Xchange Driver by Tracker Software Products LTD.
    ...and as I already stated, I reported this issue many months ago...

  • Old screensaver bug still present in Snow Leopard

    This bug has driven me mad in the past (since Tiger!) and I am still getting it on Snow Leopard.
    Scenario:
    1. Invoke screensaver
    2. Wake computer
    3. Get password prompt for a split second - (it disappears, like a focus issue).
    4. left with a blank screen and cursor. No means of logging in.
    5. try to re-invoke screensaver by either putting to sleep via power button or closing lid.
    6. Awaken computer - same thing happens.
    This doesn't happen 100% of the time but it does require a hard reboot to get out of.
    This is one of those bugs that i've managed to live with for a few years but i'm starting to go mad when its still present in the Snowleopard! (pls excuse my venting!)
    Obviously the easy issue is to disable the screensaver password - but you'd think this would be fixed by now - Or am I just being stupid and missing something obvious?
    Cheers,
    Steve </vent>

    I am experiencing both your size issue and a different bug concurrently.
    I also get the 'white' image bug if scrolling through images and then quickly backtracking to a previous one. Then that image will remain white until I close quicklook and reopen it on a different file. Reopening on the same file still results in a white image.  Happened under 10.9 and is happening to me under 10.9.2 on a Macbook Pro, 2010 iMac and non-apple branded um, mac. Size and file type don't matter.
    I get a similar log entries once in a while but the backtracking white image thing doesn't cause quicklookd to spam any console info that is searchable in the console.
    Removing quicklook plugins, clearing it's cache and whatnot didn't do anything.
    *EDIT*
    http://support.cocoatech.com/discussions/announcements/6-quicklook-issues-pf-652
    Apparently my 'snap back' issue is was caused by the version of Path Finder 6 I was running on those machines.
    It would seem that there are a number of other issues with the 10.9 quicklook API. I guess I'm going to wait and hope it gets fixed.

  • 8.0.2 horrendous bug still exists!!!!!!!!!!!!!

    The effects and sample caching bug is horrendous in my opinion. It's been there for years. It wastes huge amounts of my time. While there are some things you can do to minimize these glitches, there are NO 100% reliable work arounds. If you work in Logic and want a professional result you absolutely must listen to the finished bounce very carefully for glitches. These glitches come in many forms and will often times only be noticed after you receive the finished product from the mastering house.
    The main culprits are:
    1. Reverb and delay tails. If you have reverb or delay on a track and you stop playback and move your position, the reverb or delay will begin where it left off.
    2. Samples. For example I often replace kicks and snares with samples. When I go to start a bounce random samples will play at the beginning of the track.
    3. Clicks from compressor and EQ plug ins. These are less obvious, but generally mastering brings them out loud and clear after it's too late.
    Keep in mind that these glitches don't generally happen until a split second before a region starts. That means it is very common for them to happen in the middle of the song. Starting and stopping playback a few times does NOT completely clear the cache.
    It's a total craps shoot and the most embarrassing, time wasting aspect of Logic.
    I really wish I could trust Logic to give me a bounce that is exactly "as expected."
    I just sent a bug report... I encourage you all to do the same. They are obviously working on stuff and I think it's our responsibility to make it a priority for them.
    http://www.apple.com/feedback/logicpro.html

    Hi Rohan,
    I meant to begin my last post "with all due respect". I read you all the time, you are always well informed, plus you came up with the 8.02 key command fix/discovery..
    Rohan Stevenson1 wrote:
    hi pancentre,
    no mate that's not correct re logic flushing the buffer. that is actually my point - it can't, not the way the audio engine is designed - god, but my memory is sketchy on this - i remember getting the ins and outs of this a long time ago...
    Right, I understand exactly what you're saying, this is indeed the way Logic works... my point was it's an archaic system that was devised at a time when computers had 1/1000th the processing power we have now. There's no need for such great efficiency, plugins can be kept partially active, this is how 9 out of 10 DAWs flush the buffers, the plugin is always active to some extent.
    one of the things that makes logic efficient is the way it handles plugs - it doesn't process them the whole time - only when there is sound to process.
    Agreed, see above. I think this is related to a couple of Logic's other quirks.
    Efficiency in one area is causing less efficiency in other areas, the overload messages. What happens when a song is playing and it comes upon three regions with a couple of space designers and an instance sculpture? Instead of these plugs being partially active and using a little processor, they all become active at once and often cause a spike... ie; system overload or other kind of glitch.
    it is the 3rd party plugs that have to flush its own audio buffer - its not something logic can effect without changing the way it works to become much less efficient.
    but if you were to call it a 'logic bug' then i would find it hard to disagree with you:
    Well, I guess it's hard to say but it seems like Apple came up with a workaround for Logic's behaviour and then asked everyone else to do the same. Until Apple version 7.xx Logic's plugins used to do the reverb tails and all other manner of little tics & glitches.
    There's still a couple of Logic's plugs that aren't all the way compliant.
    pancenter-

  • 9.0.0 horrendous bug still exists!!!!!!!!!!!

    Just reintroducing my pet peeve with Logic in general. It's the one thing that frustrates me most about Logic and it still persists after many many years. Here's my original post from 8.0.2:
    http://discussions.apple.com/thread.jspa?threadID=1531297&start=0&tstart=129
    The effects and sample caching bug is horrendous in my opinion. It's been there for years. It wastes huge amounts of my time. While there are some things you can do to minimize these glitches, there are NO 100% reliable work arounds. If you work in Logic and want a professional result you absolutely must listen to the finished bounce very carefully for glitches. These glitches come in many forms and will often times only be noticed after you receive the finished product from the mastering house.
    The main culprits are:
    1. Reverb and delay tails. If you have reverb or delay on a track and you stop playback and move your position, the reverb or delay will begin where it left off.
    2. Samples. For example I often replace kicks and snares with samples. When I go to start a bounce random samples will play at the beginning of the track.
    3. Clicks from compressor and EQ plug ins. These are less obvious, but generally mastering brings them out loud and clear after it's too late.
    Keep in mind that these glitches don't generally happen until a split second before a region starts. That means it is very common for them to happen in the middle of the song. Starting and stopping playback a few times does NOT completely clear the cache.
    It's a total craps shoot and the most embarrassing, time wasting aspect of Logic.
    I really wish I could trust Logic to give me a bounce that is exactly "as expected."
    I just sent a bug report... I encourage you all to do the same. They are obviously working on stuff and I think it's our responsibility to make it a priority for them.
    http://www.apple.com/feedback/logicpro.html

    lwilliam wrote:
    It's an inexcusable bug. It's one of the few reasons left why I can't use it in front of clients. How embarassing to have to trim the beginning of a bounced file to get rid of a reverb tail!
    1. If it were truly an AU-only bug, then wouldn't Cubase also exhibit the same behavior? I've not heard of Cubase users complaining about that.
    2. If were really an plugin not following the AU spec, then why do these 3rd party plugins pass the validation test?
    Since I go way back with this... I can tell you this behavior started with version 4.xx when Emjk adapted Logic to use VST instruments. At that time all of Logic's plugins (reverbs...internal synths) exhibited these problems as well as 3rd party VST. it was a KNOWN issue and had to do with the manner in which Logic handles buffers and and unhooks plugins/AU from the CPU at stop. Plugins, VST & AU become inactive with data in their buffers. It was never a problem with any other DAW as the plugins are kept active long enough to empty the buffers. The onus being put on the plugins was added to the AU spec at a later date to cover Logic's behavior. (which really P.O.'d some plugin developers, so much so that some won't even fix what to them is not their problem.)
    I don't know about the latest version of Garageband but interestingly enough, it doesn't exhibit this problem, or if it does, nowhere near as bad as Logic. It was something that was "fixed" in Garageband.
    I dislike when companies try and rewrite history, as mentioned, this was a
    -known- issue. It was discussed between users and programmers... (back in the day).
    over and out on this.
    pancenter-

  • Firefox 14.0.1 spontaneously stopped reading old cookies- cookies still exist

    Firefox 14.0.1 on Mac OSX Snow Leopard 10.6.8
    While browsing the internet Firefox decided that I do not have any cookies. I did not quit out of Firefox or change pages when this happened.
    I had cookies when the page loaded, then Firefox appeared to have no cookies when I checked cookies in preferences. I had not changed pages, opened a new tab, cleared cookies, cleared history, or quit out of Firefox.
    When I did refresh the page I was on, it acted like I had no cookies.
    I checked my profile Library > Application Support > Firefox > Profiles > [PROFILE NAME]
    My cookies were all still in the cookies.sqlite file.
    When I quit Firefox and restarted it, my cookies were still not visible from preferences, and I was logged out of sites like Youtube. New cookies had shown up in the preferences panel from the two sites I tested.
    How do I get Firefox to read ALL of my cookies again?

    Try to clear the cookies.
    *Firefox > Preferences > Privacy > Cookies: "Show Cookies"
    If clearing cookies doesn't work then it is possible that the file <i>cookies.sqlite</i> that stores the cookies is corrupted.<br />
    Rename (or delete) <b>cookies.sqlite</b> (cookies.sqlite.old) and delete other present cookie files like <b>cookies.sqlite-journal</b> in the Firefox Profile Folder in case the file cookies.sqlite got corrupted.
    *http://kb.mozillazine.org/Cookies
    You can use this button to go to the Firefox profile folder:
    *Help > Troubleshooting Information > Profile Directory: Open Containing Folder

  • My old iCloud ID still exists on my iPad and I can't delete it.

    I deleted my old email which was also my apple ID.  In ¨manage Apple ID¨  at apple.com I changed my primary email, but on my ipad the old apple ID remains even though the email is gone. When trying to sign in with the old apple ID it says it has been deactivated.
    How to change in iCloud/iPad settings from the old appleID for the new one?
    I can't delete the old iCloud account from the iPad because the password is not accepted for signing out of ¨find my iphone¨.
    How do I delete my old Apple ID in iCloud from my iPad and replace it with my new one?

    I found the answer... to disable "Find my iPad" first before trying to delete the iCloud account, and the password was accepted. When I tried deleting the iCloud account before disabling "Find my iPad", the password wasn´t accepted.

  • Black lines in landscape content still exist in v.32.4.4 !!

    Hi
    Adobe should have been fixing this bug in 32.4.4, they did for the Adobe Content viewer.
    But this bug still exists in applications made by DPS App Builder ver 32.4.4.
    Adobe, please make hot fix URGENT
    Thanks
    Eli

    If you rebuild your app with the option "Enable auto hiding of the vertical folio scroll bar" checked this issue will not appear. Will that not work for your app?
    We do plan to release a fix for this on our next scheduled dot release, in approximately a week and a half.

  • The Bug about 'DB_SECONDARY_BAD' still exists in BerkeleyDB4.8!

    The Bug about 'DB_SECONDARY_BAD' still exists in BerkeleyDB4.8?
    I'm sorry for my poor English, But I just cannot find anywhere else for help.
    Thanks for your patience first!
    I'm using BDB4.8 C++ API on Ubuntu 10.04, Linux Kernel 2.6.32-24-generic
    $uname -a
    $Linux wonpc 2.6.32-24-generic #43-Ubuntu SMP Thu Sep 16 14:17:33 UTC 2010 i686 GNU/Linux
    When I update(overwrite) a record in database, I may get a DB_SECONDARY_BAD exception,
    What's worse, This case doesn't always occures, it's random. So I think it probably a bug
    of BDB, I have seen many issues about DB_SECONDARY_BAD with BDB4.5,4.6...
    To reproduce the issue, I make a simplified test program from my real program.
    The data to be stroed into database is a class called 'EntryData', It's defined in db_access.h,
    where also defines some HighLevel API functions that hide the BDB calls, such as
    store_entry_data(), which use EntryData as its argument. The EntryData have a string-type
    member-data 'name' and a vector<string>-type mem-data 'labels', So store_entry_data() will
    put the real data of EntryData to a contiguous memory block. The get_entry_data() returns
    an EntryData builed up from the contiguous memory block fetched from database.
    The comlete test program is post following this line:
    /////////db_access.h////////////
    #ifndef __DB_ACCESS_H__
    #define __DB_ACCESS_H__
    #include <string>
    #include <vector>
    #include <db_cxx.h>
    class EntryData;
    //extern Path DataDir; // default value, can be changed
    extern int database_setup();
    extern int database_close();
    extern int store_entry_data(const EntryData&, u_int32_t = DB_NOOVERWRITE);
    extern int get_entry_data(const std::string&, EntryData*, u_int32_t = 0);
    extern int rm_entry_data(const std::string&);
    class DBSetup
    // 构造时调用database_setup, 超出作用域自动调用database_close .
    // 该类没有数据成员.
    public:
    DBSetup() {
    database_setup();
    ~DBSetup() {
    database_close();
    class EntryData
    public:
    typedef std::vector<std::string> LabelContainerType;
    EntryData() {}
    EntryData(const std::string& s) : name(s) {}
    EntryData(const std::string& s, LabelContainerType& v)
    : name(s), labels(v) {}
    EntryData(const std::string&, const char*[]);
    class DataBlock;
    // 直接从内存块中构建, mem指针将会从数据库中获取,
    // 它就是EntryData转化成的DataBlock中buf_ptr->buf的内容.
    EntryData(const void* mem_blk, const int len);
    ~EntryData() {};
    const std::string& get_name () const { return name; }
    const LabelContainerType& get_labels() const { return labels; }
    void set_name (const std::string& s) { name = s; }
    void add_label(const std::string&);
    void rem_label(const std::string&);
    void show() const;
    // get contiguous memory for all:
    DataBlock get_block() const { return DataBlock(*this); }
    class DataBlock
    // contiguous memory for all.
    public:
    DataBlock(const EntryData& data);
    // 引进一块内存作为 buf_ptr->buf 的内容.
    // 例如从数据库中获取结果
    DataBlock(void* mem, int len);
    // 复制构造函数:
    DataBlock(const DataBlock& orig) :
    data_size(orig.data_size),
    capacity(orig.capacity),
    buf_ptr(orig.buf_ptr) { ++buf_ptr->use; }
    // 赋值操作符:
    DataBlock& operator=(const DataBlock& oth)
    data_size = oth.data_size;
    capacity = oth.capacity;
    if(--buf_ptr->use == 0)
    delete buf_ptr;
    buf_ptr = oth.buf_ptr;
    return *this;
    ~DataBlock() {
    if(--buf_ptr->use == 0) { delete buf_ptr; }
    // data()函数因 Dbt 构造函数不支持const char*而被迫返回 char*
    // data() 返回的指针是应该被修改的.
    const char* data() const { return buf_ptr->buf; }
    int size() const { return data_size; }
    private:
    void pack_str(const std::string& s);
    static const int init_capacity = 100;
    int data_size; // 记录数据块的长度.
    int capacity; // 已经分配到 buf 的内存大小.
    class SmartPtr; // 前向声明.
    SmartPtr* buf_ptr;
    class SmartPtr
    friend class DataBlock;
    char* buf;
    int use;
    SmartPtr(char* p) : buf(p), use(1) {}
    ~SmartPtr() { delete [] buf; }
    private:
    std::string name; // entry name
    LabelContainerType labels; // entry labels list
    }; // class EntryData
    #endif
    //////db_access.cc/////////////
    #include <iostream>
    #include <cstring>
    #include <cstdlib>
    #include <vector>
    #include <algorithm>
    #include "directory.h"
    #include "db_access.h"
    using namespace std;
    static Path DataDir("~/mydict_data"); // default value, can be changed
    const Path& get_datadir() { return DataDir; }
    static DbEnv myEnv(0);
    static Db db_bynam(&myEnv, 0); // using name as key
    static Db db_bylab(&myEnv, 0); // using label as key
    static int generate_keys_for_db_bylab
    (Db* sdbp, const Dbt* pkey, const Dbt* pdata, Dbt* skey)
    EntryData entry_data(pdata->get_data(), pdata->get_size());
    int lab_num = entry_data.get_labels().size();
    Dbt* tmpdbt = (Dbt*) malloc( sizeof(Dbt) * lab_num );
    memset(tmpdbt, 0, sizeof(Dbt) * lab_num);
    EntryData::LabelContainerType::const_iterator
    lab_it = entry_data.get_labels().begin(), lab_end = entry_data.get_labels().end();
    for(int i = 0; lab_it != lab_end; ++lab_it, ++i) {
    tmpdbt[ i ].set_data( (void*)lab_it->c_str() );
    tmpdbt[ i ].set_size( lab_it->size() );
    skey->set_flags(DB_DBT_MULTIPLE | DB_DBT_APPMALLOC);
    skey->set_data(tmpdbt);
    skey->set_size(lab_num);
    return 0;
    //@Return Value: return non-zero at error
    extern int database_setup()
    const string DBEnvHome (DataDir + "DBEnv");
    const string dbfile_bynam("dbfile_bynam");
    const string dbfile_bylab("dbfile_bylab");
    db_bylab.set_flags(DB_DUPSORT);
    const u_int32_t env_flags = DB_CREATE | DB_INIT_MPOOL;
    const u_int32_t db_flags = DB_CREATE;
    rmkdir(DBEnvHome);
    try
    myEnv.open(DBEnvHome.c_str(), env_flags, 0);
    db_bynam.open(NULL, dbfile_bynam.c_str(), NULL, DB_BTREE, db_flags, 0);
    db_bylab.open(NULL, dbfile_bylab.c_str(), NULL, DB_BTREE, db_flags, 0);
    db_bynam.associate(NULL, &db_bylab, generate_keys_for_db_bylab, 0);
    } catch(DbException &e) {
    cerr << "Err when open DBEnv or Db: " << e.what() << endl;
    return -1;
    } catch(std::exception& e) {
    cerr << "Err when open DBEnv or Db: " << e.what() << endl;
    return -1;
    return 0;
    int database_close()
    try {
    db_bylab.close(0);
    db_bynam.close(0);
    myEnv.close(0);
    } catch(DbException &e) {
    cerr << e.what();
    return -1;
    } catch(std::exception &e) {
    cerr << e.what();
    return -1;
    return 0;
    // 返回Dbt::put()的返回值
    int store_entry_data(const EntryData& e, u_int32_t flags)
    int res = 0;
    try {
    EntryData::DataBlock blk(e);
    // data()返回的buf中存放的第一个字符串便是 e.get_name().
    Dbt key ( (void*)blk.data(), strlen(blk.data()) + 1 );
    Dbt data( (void*)blk.data(), blk.size() );
    res = db_bynam.put(NULL, &key, &data, flags);
    } catch (DbException& e) {
    cerr << e.what() << endl;
    throw; // 重新抛出.
    return res;
    // 返回 Db::get()的返回值, 调用成功时 EntryData* e的值才有意义
    int get_entry_data
    (const std::string& entry_name, EntryData* e, u_int32_t flags)
    Dbt key( (void*)entry_name.c_str(), entry_name.size() + 1 );
    Dbt data;
    data.set_flags(DB_DBT_MALLOC);
    int res = db_bynam.get(NULL, &key, &data, flags);
    if(res == 0)
    new (e) EntryData( data.get_data(), data.get_size() );
    free( data.get_data() );
    return res;
    int rm_entry_data(const std::string& name)
    Dbt key( (void*)name.c_str(), name.size() + 1 );
    cout << "to remove: \'" << name << "\'" << endl;
    int res = db_bynam.del(NULL, &key, 0);
    return res;
    EntryData::EntryData(const std::string& s, const char* labels_arr[]) : name(s)
    {   // labels_arr 需要以 NULL 结尾.
    for(const char** i = labels_arr; *i != NULL; i++)
    labels.push_back(*i);
    EntryData::EntryData(const void* mem_blk, const int len)
    const char* buf = (const char*)mem_blk;
    int consumed = 0; // 已经消耗的mem_blk的大小.
    name = buf; // 第一串为 name
    consumed += name.size() + 1;
    for (string label = buf + consumed;
    consumed < len;
    consumed += label.size() + 1)
    label = buf + consumed;
    labels.push_back(label);
    void EntryData::add_label(const string& new_label)
    if(find(labels.begin(), labels.end(), new_label)
    == labels.end())
    labels.push_back(new_label);
    void EntryData::rem_label(const string& to_rem)
    LabelContainerType::iterator iter = find(labels.begin(), labels.end(), to_rem);
    if(iter != labels.end())
    labels.erase(iter);
    void EntryData::show() const {
    cout << "name: " << name << "; labels: ";
    LabelContainerType::const_iterator it, end = labels.end();
    for(it = labels.begin(); it != end; ++it)
    cout << *it << " ";
    cout << endl;
    EntryData::DataBlock::DataBlock(const EntryData& data) :
    data_size(0),
    capacity(init_capacity),
    buf_ptr(new SmartPtr(new char[init_capacity]))
    pack_str(data.name);
    for(EntryData::LabelContainerType::const_iterator \
    i = data.labels.begin();
    i != data.labels.end();
    ++i) { pack_str(*i); }
    void EntryData::DataBlock::pack_str(const std::string& s)
    int string_size = s.size() + 1; // to put sting in buf separately.
    if(capacity >= data_size + string_size) {
    memcpy(buf_ptr->buf + data_size, s.c_str(), string_size);
    else {
    capacity = (data_size + string_size)*2; // 分配尽可能大的空间.
    buf_ptr->buf = (char*)realloc(buf_ptr->buf, capacity);
    memcpy(buf_ptr->buf + data_size, s.c_str(), string_size);
    data_size += string_size;
    //////////// test_put.cc ///////////
    #include <iostream>
    #include <string>
    #include <cstdlib>
    #include "db_access.h"
    using namespace std;
    int main(int argc, char** argv)
    if(argc < 2) { exit(EXIT_FAILURE); }
    DBSetup setupup_mydb;
    int res = 0;
    EntryData ed(argv[1], (const char**)argv + 2);
    res = store_entry_data(ed);
    if(res != 0) {
         cerr << db_strerror(res) << endl;
         return res;
    return 0;
    // To Compile:
    // $ g++ -ldb_cxx -lboost_regex -o test_put test_put.cc db_access.cc directory.cc
    //////////// test_update.cc ///////////
    #include <iostream>
    #include <cstdlib>
    #include <string>
    #include <boost/program_options.hpp>
    #include "db_access.h"
    using namespace std;
    namespace po = boost::program_options;
    int main(int argc, char** argv)
    if(argc < 2) { exit(EXIT_SUCCESS); }
    DBSetup setupup_mydb;
    int res = 0;
    po::options_description cmdopts("Allowed options");
    po::positional_options_description pos_opts;
    cmdopts.add_options()
    ("entry", "Specify the entry that will be edited")
    ("addlabel,a", po::value< vector<string> >(),
    "add a label for specified entry")
    ("removelabel,r", po::value< vector<string> >(),
    "remove the label of specified entry")
    pos_opts.add("entry", 1);
    po::variables_map vm;
    store( po::command_line_parser(argc, argv).
    options(cmdopts).positional(pos_opts).run(), vm );
    notify(vm);
    EntryData entry_data;
    if(vm.count("entry")) {
    const string& entry_to_edit = vm["entry"].as<string>();
    res = get_entry_data( entry_to_edit, &entry_data );
    switch (res)
    case 0:
    break;
    case DB_NOTFOUND:
    cerr << "No entry named: \'"
    << entry_to_edit << "\'\n";
    return res;
    break;
    default:
    cerr << db_strerror(res) << endl;
    return res;
    } else {
    cerr << "No entry specified\n";
    exit(EXIT_FAILURE);
    EntryData new_entry_data(entry_data);
    typedef vector<string>::const_iterator VS_CI;
    if(vm.count("addlabel")) {
    const vector<string>& to_adds = vm["addlabel"].as< vector<string> >();
    VS_CI end = to_adds.end();
    for(VS_CI i = to_adds.begin(); i != end; ++i) {
    new_entry_data.add_label(*i);
    if(vm.count("removelabel")) {
    const vector<string>& to_rems = vm["removelabel"].as< vector<string> >();
    VS_CI end = to_rems.end();
    for(VS_CI i = to_rems.begin(); i != end; ++i) {
    new_entry_data.rem_label(*i);
    cout << "Old data| ";
    entry_data.show();
    cout << "New data| ";
    new_entry_data.show();
    res = store_entry_data(new_entry_data, 0); // set flags to zero permitting Over Write
    if(res != 0) {
    cerr << db_strerror(res) << endl;
    return res;
    return 0;
    // To Compile:
    // $ g++ -ldb_cxx -lboost_regex -lboost_program_options -o test_update test_update.cc db_access.cc directory.cc

    ////////directory.h//////
    #ifndef __DIRECTORY_H__
    #define __DIRECTORY_H__
    #include <string>
    #include <string>
    #include <sys/types.h>
    using std::string;
    class Path
    public:
    Path() {}
    Path(const std::string&);
    Path(const char* raw) { new (this) Path(string(raw)); }
    Path upper() const;
    void operator+= (const std::string&);
    // convert to string (char*):
    //operator std::string() const {return spath;}
    operator const char*() const {return spath.c_str();}
    const std::string& str() const {return spath;}
    private:
    std::string spath; // the real path
    inline Path operator+(const Path& L, const string& R)
    Path p(L);
    p += R;
    return p;
    int rmkdir(const string& path, const mode_t mode = 0744, const int depth = -1);
    #endif
    ///////directory.cc///////
    #ifndef __DIRECTORY_H__
    #define __DIRECTORY_H__
    #include <string>
    #include <string>
    #include <sys/types.h>
    using std::string;
    class Path
    public:
    Path() {}
    Path(const std::string&);
    Path(const char* raw) { new (this) Path(string(raw)); }
    Path upper() const;
    void operator+= (const std::string&);
    // convert to string (char*):
    //operator std::string() const {return spath;}
    operator const char*() const {return spath.c_str();}
    const std::string& str() const {return spath;}
    private:
    std::string spath; // the real path
    inline Path operator+(const Path& L, const string& R)
    Path p(L);
    p += R;
    return p;
    int rmkdir(const string& path, const mode_t mode = 0744, const int depth = -1);
    #endif
    //////////////////// All the code is above ////////////////////////////////
    Use the under command
    $ g++ -ldb_cxx -lboost_regex -o test_put test_put.cc db_access.cc directory.cc
    to get a test program that can insert a record to database.
    To insert a record, use the under command:
    $ ./test_put ubuntu linux os
    It will store an EntryData named 'ubuntu' and two labels('linux', 'os') to database.
    Use the under command
    $ g++ -ldb_cxx -lboost_regex -lboost_program_options -o test_update test_update.cc db_access.cc directory.cc
    to get a test program that can update the existing records.
    To update the record, use the under command:
    $ ./test_update ubuntu -r linux -a canonical
    It will update the with the key 'ubuntu', with the label 'linux' removed and a new
    label 'canonical'.
    Great thanks to you if you've read and understood my code!
    I've said that the DB_SECONDARY_BAD exception is random. The same operation may cause
    exception in one time and may goes well in another time.
    As I've test below:
    ## Lines not started with '$' is the stdout or stderr.
    $ ./test_put linux os linus
    $ ./test_update linux -r os
    Old data| name: linux; labels: os linus
    New data| name: linux; labels: linus
    $ ./test_update linux -r linus
    Old data| name: linux; labels: linus
    New data| name: linux; labels:
    dbfile_bynam: DB_SECONDARY_BAD: Secondary index inconsistent with primary
    Db::put: DB_SECONDARY_BAD: Secondary index inconsistent with primary
    terminate called after throwing an instance of 'DbException'
    what(): Db::put: DB_SECONDARY_BAD: Secondary index inconsistent with primary
    已放弃
    Look! I've received a DB_SECONDARY_BAD exception. But thus exception does not always
    happen even under the same operation.
    For the exception is random, you may have not the "luck" to get it during your test.
    So let's insert a record by:
    $ ./test_put t
    and then give it a great number of labels:
    $ for((i = 0; i != 100; ++i)); do ./test_update t -a "label_$i"; done
    and then:
    $ for((i = 0; i != 100; ++i)); do ./test_update t -r "label_$i"; done
    Thus, the DB_SECONDARY_BAD exception is almost certain to happen.
    I've been confused by the problem for times. I would appreciate if someone can solve
    my problem.
    Many thanks!
    Wonder

  • Bug #18104 still exists

    Hello,
    I am quite disappointed about BDB 5. One of the most nasty bugs (#18104) still
    exists. As soon as you want to use the set_thread_count() feature, BDB will not
    free the thread-control-block. If you connect/disconnect, BDB will stop working
    quite early. You can re-produce this issue with any `db_*` tool.
    The testcase:
    #include <stdlib.h>
    #include <db.h>
    #define DIRECTORY "/tmp/db"
    int main()
        /* open environment */
        DB_ENV *handle;
        int status = db_env_create( &handle, 0 );
        status = handle->set_cachesize( handle, 0, 32*1024*1024, 0 );
        status = handle->set_thread_count( handle, 0x100 );
        status = handle->open( handle, DIRECTORY, DB_CREATE, 0644 );
        if( status != 0 )
            return 1;
        /* raise error "Unable to allocate thread control block" */
        for( ;; )
            system( "db_stat -e -h " DIRECTORY " | grep process/thread | wc" );
        return 0;
    }

    Hi Sandra,
    Hi Greg,
    Our architecture is quite simple: a cron-job runs ENV->failchk() and ENV->txn_checkpoint()
    once a minute (which should be fine, shouldn't it?)
    The problem, neither ENV->close() nor ENV->failchk() removes outdated items from the
    thread-control-block. One would expect, that the PID is added to the block as soon as the
    process connects and removed when the process disconnects. But it is not.
    If the block runs out of memory, BDB requires a recovery (see the down below testcase).
    Usually ENV->failchk() cleans the thread-control-block, as soon as there are more items in
    the block than "thread_count". Today three times it did not even remove them, if there were
    more than "thread_count" items in the block - but this happend sporadic so it was difficult
    to create a testcase.
    Once ENV->failchk() cleans the thread-control-block, BDB works as expected. If a process
    connects, the PID is added to the block, and as soon as the process disconnects, the PID is
    removed from the thread-control-block. You can test this by looping the first loop 1090 times.
    The testcase:
    #include <stdio.h>
    #include <stdlib.h>
    #include <signal.h>
    #include <db.h>
    #include <errno.h>
    #define DIRECTORY "/tmp/db"
    static int bdb_is_alive( DB_ENV *dbenv, pid_t pid, db_threadid_t tid, u_int32_t flags )
        int status;
        status = kill( pid, 0 );
        if( status != -1 )
            return 1;
        if( errno == ESRCH )
            return 0;
        exit( 1 );  /* should never happen */
    int main()
        system( "mkdir -p " DIRECTORY );
        system( "db_recover -h " DIRECTORY );
        system( "rm -rfv " DIRECTORY "/*" );
        /* open environment */
        int status, i;
        DB_ENV *handle;
        status = db_env_create( &handle, 0 );
        status = handle->set_cachesize( handle, 0, 32*1024*1024, 0 );
        status = handle->set_thread_count( handle, 1091 );
        status = handle->set_isalive( handle, bdb_is_alive );
        status = handle->open( handle, DIRECTORY, DB_CREATE, 0644 );
        if( status != 0 )
            return 1;   /* should never happen */
        status = handle->failchk( handle, 0 );
        status = handle->close( handle, 0 );
        /* Now start workers (`db_stat`) + failchks() */
        for( i=0; i < 1089; ++i )       /* thread_count - 2 */
            fprintf(stderr,"Number of items in the thread-control-block: "); fflush(stdout);
            system( "db_stat -e -h " DIRECTORY " | grep process/thread | wc -l" );
            status = db_env_create( &handle, 0 );
            status = handle->set_isalive( handle, bdb_is_alive );
            status = handle->open( handle, DIRECTORY, DB_CREATE, 0644 );
            if( status != 0 )
                return 1;   /* should never happen */
            status = handle->failchk( handle, 0 );      /* strange - does not remove the process-entries created by `db_stat` */
            if( status != 0 )
                return 1;   /* should never happen */
            status = handle->close( handle, 0 );
        /* raise error: "Unable to allocate thread control block" */
        for( i=1; i < 422; ++i )
            fprintf(stderr,"Number of items in the thread-control-block: "); fflush(stdout);
            system( "db_stat -e -h " DIRECTORY " | grep process/thread | wc -l" );
        /* You should see on stderr:
                db_stat: Unable to allocate thread control block
                db_stat: Unable to allocate thread control block
                db_stat: DB_ENV->open: /tmp/db: Cannot allocate memory
        fprintf(stderr,"BDB is dead now. Only `db_recover` helps...\n%s\n",db_version(NULL,NULL,NULL));
        return 0;
    }

  • How can I remove my very old Apple ID from my Iphone 4S as I have created other apple IDs.The old one is still staying on my mobile but that email doesn't exist anymore. I cant rest my mobile as this email address is staying my icloud setting.

    Q:-
    How can I remove my very old Apple ID from my Iphone 4S. The old ID is still staying on my mobile but that email doesn't exist anymore. I cant rest my mobile as everytime i tried it asks ID password which I don't remember.

    Hello mushysun,
    Thanks for using Apple Support Communities.
    If you did not sign out of your Apple ID on your iPhone before creating a new one, then you will need to sign back in with your previous Apple ID and then sign out.  If you do not remember your password and do not have access to the email account, then you can reset your password by using the security questions.
    If you forgot your Apple ID password - Apple Support
    Have a great weekend,
    Alex H.

  • Camera issue still exists in AIR 16 beta

    Just tested my simple camera tester with Air 16 Beta and the issue still exists.
    Im refering to the issue were the camera stops responding after a number of attaches/detaches to a video object and if attached multiple calls to setMode.
    The issue im referring to is Bug#3850401 - Handle leak with video.attachCamera leading to inoperable camera

    Just tested my simple camera tester with Air 16 Beta and the issue still exists.
    Im refering to the issue were the camera stops responding after a number of attaches/detaches to a video object and if attached multiple calls to setMode.
    The issue im referring to is Bug#3850401 - Handle leak with video.attachCamera leading to inoperable camera

  • HT5621 I recently changed my apple ID but the old on is still on my iCloud account. The old address is dimmed on iCloud on my iPad so I can't change it. How do I change to the new address?  I don't want to delete the account as I don't want to lose the pi

    I recently changed my apple ID but the old on is still on my iCloud account. The old address is dimmed on iCloud on my iPad so I can't change it. How do I change to the new address?  I don't want to delete the account as I don't want to lose the pictures

    To change it, you have delete the existing account.  However you can avoid losing any pictures in the process.  To avoid losing photo stream photos, save them to your camera roll (if not already there) before deleting the account.  To do this, open your my photo stream album, tap Edit, tap the photos, tap Share, then tap Save to Camera Roll.  (Camera roll photos are not effected by deleting the account.)
    Then go to Settings>iCloud, tap Delete Account, then sign back in with the new ID.  This deletes the account and your iCloud data from your device, but not from iCloud.  Provided you are signing back into the same account, your iCloud data will reappear on your device when you sign back in.

Maybe you are looking for

  • In  sale sorder based production order can i consume unrestirced stock

    HI,      i am creating Production order using co08 with respect to sales order.the ( bom items)components to be cosumend for that production order should be sales order stock compulsory. if i want to consume against sales order how can i consume stoc

  • PHP Code: Using a variable to name the file in an Include

    I have a series of case statements assigning a value to the variable $theme based on the current month. Then I have a set of files (january.txt, february.txt, etc.). The variable values are those file names: // get current month as a number $month =

  • Problems with saving pdf as a word doc

    hello, i recently upgraded to acrobt x pro, and i went to convert a one-page pdf into a word doc.  i went to "file," "save as," "word document, and when i went to view the word doc, the format/layout/font, etc. was completely garbled.  what could i b

  • Sound problems after updating to ios7?

    Even though the sound IS turned on, all games are without sound after the update - how do I get the sound back? Is it possible to reverse the update? because I don't like it one bit!

  • RE:table field

    Hi all, What is the table for grouping in SAP. Thanks, Alex.