Skip to Main Content

Berkeley DB Family

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

comparison function returns incorrect data

3333809Oct 21 2016 — edited Nov 1 2016

i have modified the examples/c/ex_heap.c to read from one db and insert/delete in another.  For some reason one of the keys that the comparison function receives is either truncated or doesn't match any records in the db.  This is my comparison function

int compare_cmid(dbp, a, b, lob)

        DB *dbp;

        const DBT *a, *b;

        size_t *lob;

{

       //char* temp_a = (char*)a->data;

       //char* temp_b = (char*)b->data;

       //printf("temp_a = %s\n", temp_a);

       //printf("temp_b = %s\n", temp_b);

        char key_a[25];

        char key_b[25];

        memset(key_a,'\0',sizeof(key_a));

        memset(key_b,'\0',sizeof(key_b));

       int ascii_a[256];

       int ascii_b[256];

       int i;

       memset(ascii_a, 0, sizeof(ascii_a));

       memset(ascii_b, 0, sizeof(ascii_b));

       strcpy(key_a, a->data);

       strcpy(key_b, b->data);

       printf("key_a = %s\n", key_a);

       printf("key_b = %s\n", key_b);

       int l_a;

       l_a =  strlen(key_a);

       int l_b;

       l_b = strlen(key_b);

       int value;

       for (i=0; i<l_a; i++) {

         value = key_a[i];

         ascii_a[value]++;

       }

       for(i=0; i<l_b; i++) {

         value = key_b[i];

         ascii_b[value]++;

        }

       for(i=0; i<256; i++) {

         if(ascii_a[i] > ascii_b[i]) {

             return 1;

         } else if (ascii_a[i] < ascii_b[i]) {

             return -1;

         }

       }

       return 0;

}

b is often messed up.  I'm setting the comparison function before opening the db and it gets called fine but just not with the expected keys.  Please assist.

This post has been answered by userBDBDMS-Oracle on Oct 21 2016
Jump to Answer

Comments

BalaGuddeti-Oracle

In the earlier post, you have set the Maximum recipients to 100, hence Email server control mechanism is activated to control spam emails. if you expect 500 emails, change the Maximum number of recipients to 500

Gianni Ceresa

4.3.2 The maximum number of concurrent server connections has exceeded a per-source limit, closing transmission channel
This is not an OBIEE/OAS error message, the issue is not here, you are looking in the wrong place....
This is a mail server error message.
You should speak to your mail server administrators giving them that error and explaining what you were (or what the tool was doing on your behalf) when the error appears in the logs.
Do not touch the maximum recipients number, leave it to 0 as Joel said in the other thread: 0 means unlimited. That setting is used more for other reasons, like when you want to avoid somebody setup an agent spamming your entire company sending an agent delivery to 1000+ people, it's a way to limit the freedom of people creating agents based on company's rules.
Your issue is that OBIEE/OAS is sending the emails in a way that is outside the limits of the mail server, not on the OBIEE/OAS side, but on the mail server side.
Speak your mail server administrators, also telling them you don't really have options to slow down the sending process on the OBIEE/OAS side.
Maybe they will ask you to send these emails in batches, and for that you will need some creativity (like using 2 agents running at separate times doing each half the list of emails).

1 - 2
Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on Nov 29 2016
Added on Oct 21 2016
23 comments
1,167 views