A Bug in 11.1 array interface

I have just encounter some code that runs fine in Oracle 9 to 10 but in 11.1 I am getting a different result.
basically I have this SQL
"INSERT INTO $table ( row_1, row_2, row_3) VALUES (?,?,?)"
and bind all three to this array
@var2 = (2,2,2,2,'s',2,2,2,2,2);
using OCIBindByName and OCIBindDynamic and then execute them with
OCIStmtExecute, with a mode (IN)
of OCI_BATCH_ERRORS OCI_COMMIT_ON_SUCCESS (or 160)
what happens is the commit does not happen in 11 but does happen in 9~10?
Did something change in the execute in 11 or should I raise this up to a bug status??

Ok here is a trace of the OCI Calls I use, and yes I the last one I give is a OCITransCommit
st_execute_array INSERT count=10 (ARRAY(0x1a725c8) ARRAY(0x1a934c4) undef)
OCIBindByName(876dad8,19cab00,8755e68,":p1",3,0,1,1,0,0,0,0,0,DATA_AT_EXEC)=SUCCESS
OCIBindDynamic(876eda8,8755e68,19caadc, phs_in,19caadc,phs_out)=SUCCESS
OCIBindByName(876dad8,1a27810,8755e68,":p2",3,0,1,1,0,0,0,0,0,DATA_AT_EXEC)=SUCCESS
OCIBindDynamic(876ec68,8755e68,1a277ec,phs_in,1a277ec,phs_out)=SUCCESS
OCIBindByName(876dad8,1a2bc18,8755e68,":p3",3,0,1,1,0,0,0,0,0,DATA_AT_EXEC)=SUCCESS
OCIBindDynamic(876eb28,8755e68,1a2bbf4,phs_in,1a2bbf4,phs_out)=SUCCESS
OCIStmtExecute(8755db0,876dad8,8755e68,10,0,0,0,160)=SUCCESS_WITH_INFO ->(OCI_BATCH_ERRORS|OCI_COMMIT_ON_SUCCESS)<--
OCIAttrGet(876dad8,OCI_HTYPE_STMT,140f4ec,0,129,8755e68)=SUCCESS
OCIErrorGet(8755e68,1,"<NULL>",140f48c,"ORA-24381: error(s) in array DML",1024,2)=SUCCESS
OCIErrorGet(8755e68,2,"<NULL>",140f48c,"ORA-24381: error(s) in array DML",1024,2)=NO_DATA
OCIAttrGet(876dad8,OCI_HTYPE_STMT,140f55c,0,73,8755e68)=SUCCESS
st_execute_array 1 errors in batch.
OCIHandleAlloc(8727940,140f578,OCI_HTYPE_ERROR,0,0)=SUCCESS
OCIHandleAlloc(8727940,140f570,OCI_HTYPE_ERROR,0,0)=SUCCESS
OCIParamGet(8755e68,2,876c3c0,140f578,0)=SUCCESS
OCIAttrGet(876c968,OCI_HTYPE_ERROR,140f550,0,74,8755e68)=SUCCESS
st_execute_array error in row 4.
OCIErrorGet(876c968,1,"<NULL>",140f4cc,"ORA-01722: invalid number",1024,2)=SUCCESS
     OCIErrorGet(876c968,2,"<NULL>",140f4cc,"ORA-01722: invalid number",1024,2)=NO_DATA
OCIHandleFree(876c3c0,OCI_HTYPE_ERROR)=SUCCESS
OCIHandleFree(876c968,OCI_HTYPE_ERROR)=SUCCESS
OCITransCommit(8755db0,8755e68,0)=SUCCESS
st_execute_array warning: ORA-24381: error(s) in array DML (SUCCESS_WITH_
INFO: error possibly near <*> indicator at char 56 in 'INSERT INTO test_ea( row_1, row_2,
row_3) VALUES (:p1,:<*>p2,:p3)') [for Statement "INSERT INTO test_ea( row_1,  row_2, row_
3) VALUES (?,?,?)"]
and here is the code snipits but it is take out of a larger program so I will not run
sb4
phs_in(dvoid octxp, OCIBind bindp, ub4 iter, ub4 index,
     dvoid **bufpp, ub4 alenp, ub1 piecep, dvoid **indpp)
     phs_t phs = (phs_t)octxp;
STRLEN phs_len;
AV *tuples_av;
     SV *sv;
     AV *av;
     SV **sv_p;
     /* Check for bind values supplied by tuple array. */
     tuples_av = phs->imp_sth->bind_tuples;
     if(tuples_av) {
          /* NOTE: we already checked the validity in ora_st_bind_for_array_exec(). */
          sv_p = av_fetch(tuples_av, phs->imp_sth->rowwise ? (int)iter : phs->idx, 0);
          av = (AV*)SvRV(*sv_p);
          sv_p = av_fetch(av, phs->imp_sth->rowwise ? phs->idx : (int)iter, 0);
          sv = *sv_p;
          if(SvOK(sv)) {
          *bufpp = SvPV(sv, phs_len);
          phs->alen = (phs->alen_incnull) ? phs_len+1 : phs_len;
          phs->indp = 0;
          } else {
          *bufpp = SvPVX(sv);
          phs->alen = 0;
          phs->indp = -1;
*alenp  = phs->alen;
*indpp  = &phs->indp;
*piecep = OCI_ONE_PIECE;
if (!tuples_av && (index > 0 || iter > 0))
          croak(" Arrays and multiple iterations not currently supported (in %d/%d)", index,iter);
return OCI_CONTINUE;
sb4
phs_out(dvoid octxp, OCIBind bindp,
     ub4 iter,     /* execution itteration (0...)     */
     ub4 index,     /* array index (0..)          */
     dvoid **bufpp,     /* A pointer to a buffer to write the bind value/piece.     */
     ub4 **alenpp,     /* A pointer to a storage for OCI to fill in the size     */
               /* of the bind value/piece after it has been read.     */
     ub1 piecep,     / */
     dvoid **indpp,     /* Return a pointer to contain the indicator value which either an sb2     */
               /* value or a pointer to an indicator structure for named data types.     */
     ub2 **rcodepp)     /* Returns a pointer to contains the return code.     */
phs_t phs = (phs_t)octxp;     /* context */
if (phs->desc_h) { /* a  descriptor if present  (LOBs etc)*/
          *bufpp  = phs->desc_h;
          phs->alen = 0;
} else {
          SV *sv = phs->sv;
          if (SvTYPE(sv) == SVt_RV && SvTYPE(SvRV(sv)) == SVt_PVAV) {
          sv = av_fetch((AV)SvRV(sv), (IV)iter, 1);
          if (!SvOK(sv))
                    sv_setpv(sv,"");
          bufpp = SvGROW(sv, (size_t)(((phs->maxlen < 28) ? 28 : phs->maxlen)+1)/for null*/);
          phs->alen = SvLEN(sv);     /* max buffer size now, actual data len later */
*alenpp = &phs->alen;
*indpp  = &phs->indp;
*rcodepp= &phs->arcode;
*piecep = OCI_ONE_PIECE;
return OCI_CONTINUE;
static int
do_bind_array_exec(sth, imp_sth, phs)
SV *sth;
imp_sth_t *imp_sth;
phs_t *phs;
     dTHX;
sword status;
OCIBindByName_log(imp_sth->stmhp, &phs->bndhp, imp_sth->errhp,
(text*)phs->name, (sb4)strlen(phs->name),
0,
phs->maxlen ? (sb4)phs->maxlen : 1, /* else bind "" fails */
(ub2)phs->ftype, 0,
NULL, /* ub2 alen_ptr not needed with OCIBindDynamic /
0,
0, /* max elements that can fit in allocated array */
NULL, /* (ptr to) current number of elements in array */
(ub4)OCI_DATA_AT_EXEC,
status);
if (status != OCI_SUCCESS) {
oci_error(sth, imp_sth->errhp, status, "OCIBindByName");
return 0;
OCIBindDynamic_log(phs->bndhp, imp_sth->errhp,
(dvoid *)phs, phs_in,
(dvoid *)phs, phs_out, status);
if (status != OCI_SUCCESS) {
oci_error(sth, imp_sth->errhp, status, "OCIBindDynamic");
return 0;
return 1;
static void
init_bind_for_array_exec(phs)
phs_t *phs;
     dTHX;
if (phs->sv == &sv_undef) { /* first bind for this placeholder  */
phs->is_inout = 0;
phs->maxlen = 1;
/* treat Oracle7 SQLT_CUR as SQLT_RSET for Oracle8 */
if (phs->ftype==102)
phs->ftype = 116;
/* some types require the trailing null included in the length. */
/* SQLT_STR=5=STRING, SQLT_AVC=97=VARCHAR */
phs->alen_incnull = (phs->ftype==SQLT_STR || phs->ftype==SQLT_AVC);
int
st_execute_array(sth, imp_sth, tuples, tuples_status, columns, exe_count)
SV *sth;
imp_sth_t *imp_sth;
SV *tuples;
SV *tuples_status;
SV *columns;
ub4 exe_count;
     sword status, exe_status;
int is_select = (imp_sth->stmt_type == OCI_STMT_SELECT);
AV tuples_av, tuples_status_av, *columns_av;
ub4 oci_mode;
ub4 num_errs;
int i,j;
int autocommit = 1;
SV **sv_p;
     phs_t **phs;
     SV *sv;
     AV *av;
int param_count;
char namebuf[30];
STRLEN len;
int outparams = (imp_sth->out_params_av) ? AvFILL(imp_sth->out_params_av)+1 : 0;
tuples_av = (AV*)SvRV(tuples);
/* Check the `columns' parameter. */
if(SvTRUE(columns)) {
if(!SvROK(columns) || SvTYPE(SvRV(columns)) != SVt_PVAV) {
croak("ora_st_execute_array(): columns not an array peference.");
columns_av = (AV*)SvRV(columns);
} else {
columns_av = NULL;
/* Check the `tuples_status' parameter. */
if(SvTRUE(tuples_status)) {
if(!SvROK(tuples_status) || SvTYPE(SvRV(tuples_status)) != SVt_PVAV) {
     croak("ora_st_execute_array(): tuples_status not an array reference.");
tuples_status_av = (AV*)SvRV(tuples_status);
av_fill(tuples_status_av, exe_count - 1);
/* Fill in 'unknown' exe count in every element (know not how to get
individual execute row counts from OCI). */
for(i = 0; (unsigned int) i < exe_count; i++) {
av_store(tuples_status_av, i, newSViv((IV)-1));
} else {
tuples_status_av = NULL;
/* Nothing to do if no tuples. */
if(exe_count <= 0)
return 0;
param_count=c_NUM_PARAMS(imp_sth);/*returns the # of parameters on the imp_sth struct*/
     phs = safemalloc(param_count*sizeof(*phs));
memset(phs, 0, param_count*sizeof(*phs));
     for(j = 0; (unsigned int) j < exe_count; j++) {
     sv_p = av_fetch(tuples_av, j, 0);
if(sv_p == NULL) {
Safefree(phs);
croak("Cannot fetch tuple %d", j);
sv = *sv_p;
if(!SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVAV) {
Safefree(phs);
croak("Not an array ref in element %d", j);
av = (AV*)SvRV(sv);
for(i = 0; i < param_count; i++) {
if(!phs) {
SV **phs_svp;
sprintf(namebuf, ":p%d", i+1);
phs_svp = hv_fetch(imp_sth->all_params_hv,
namebuf, strlen(namebuf), 0);
if (phs_svp == NULL) {
Safefree(phs);
croak("Can't execute for non-existent placeholder :%d", i);
phs[i] = (phs_t*)(void*)SvPVX(*phs_svp); /* placeholder struct */
if(phs[i]->idx < 0) {
Safefree(phs);
croak("Placeholder %d not of ?/:1 type", i);
init_bind_for_array_exec(phs[i]); /*bind the value */
sv_p = av_fetch(av, phs[i]->idx, 0);
if(sv_p == NULL) {
Safefree(phs);
croak("Cannot fetch value for param %d in entry %d", i, j);
               sv = *sv_p;
     /*check to see if value sv is a null (undef) if it is upgrade it*/
               if (!SvOK(sv))     {
                    if(SvUPGRADE(sv, SVt_PV)){} /* For GCC not to warn on unused result */
               else {
          SvPV(sv, len);
     /* Find the value length, and increase maxlen if needed. */
     if(SvROK(sv)) {
     Safefree(phs);
     croak("Can't bind a reference (%s) for param %d, entry %d",
     neatsvpv(sv,0), i, j);
     if(len > (unsigned int) phs[i]->maxlen)
     phs[i]->maxlen = len;
     /* Do OCI bind calls on last iteration. */
     if( ((unsigned int) j ) == exe_count - 1 ) {
     if(!do_bind_array_exec(sth, imp_sth, phs[i])) {
     Safefree(phs);
     Safefree(phs);
/* Store array of bind typles, for use in OCIBindDynamic() callback. */
imp_sth->bind_tuples = tuples_av;
imp_sth->rowwise = (columns_av == NULL);
oci_mode = OCI_BATCH_ERRORS;
if(autocommit)
oci_mode |= OCI_COMMIT_ON_SUCCESS;
     OCIStmtExecute_log(imp_sth->svchp, imp_sth->stmhp, imp_sth->errhp,
exe_count, 0, 0, 0, oci_mode, exe_status);
     imp_sth->bind_tuples = NULL;
if (exe_status != OCI_SUCCESS) {
          oci_error(sth, imp_sth->errhp, exe_status, ora_sql_error(imp_sth,"OCIStmtExecute"));
if(exe_status != OCI_SUCCESS_WITH_INFO)
return -2;
OCIAttrGet_log(imp_sth, &num_errs, 0, OCI_ATTR_NUM_DML_ERRORS, status);
if(num_errs && tuples_status_av) {
OCIError row_errhp, tmp_errhp;
ub4 row_off;
SV *err_svs[2];
/*AV err_av;/
sb4 err_code;
err_svs[0] = newSViv((IV)0);
err_svs[1] = newSVpvn("", 0);
OCIHandleAlloc_log(imp_sth->envhp, &row_errhp, OCI_HTYPE_ERROR, status);
OCIHandleAlloc_log(imp_sth->envhp, &tmp_errhp, OCI_HTYPE_ERROR, status);
for(i = 0; (unsigned int) i < num_errs; i++) {
OCIParamGet_log(imp_sth->errhp, OCI_HTYPE_ERROR,
tmp_errhp, (dvoid *)&row_errhp,
(ub4)i, status);
OCIAttrGet_log(row_errhp, OCI_HTYPE_ERROR, &row_off, 0,
OCI_ATTR_DML_ROW_OFFSET, imp_sth->errhp, status);
sv_setpv(err_svs[1], "");
err_code = oci_error_get(row_errhp, exe_status, NULL, err_svs[1], debug);
sv_setiv(err_svs[0], (IV)err_code);
av_store(tuples_status_av, row_off,
newRV_noinc((SV *)(av_make(2, err_svs))));
OCIHandleFree_log(tmp_errhp, OCI_HTYPE_ERROR, status);
OCIHandleFree_log(row_errhp, OCI_HTYPE_ERROR, status);
/* Do a commit here if autocommit is set, since Oracle
doesn't do that for us when some rows are in error. */
if(autocommit) {
OCITransCommit_log(imp_sth->svchp, imp_sth->errhp,
OCI_DEFAULT, status);
if (status != OCI_SUCCESS) {
oci_error(sth, imp_sth->errhp, status, "OCITransCommit");
return -2;
if(num_errs) {
return -2;
} else {
ub4 row_count = 0;
          OCIAttrGet_stmhp_log(imp_sth, &row_count, 0, OCI_ATTR_ROW_COUNT, status);
return row_count;

Similar Messages

  • Help with OCI array interface

    I have not been able to find any good examples showing the use of the OCI array interface. Could someone supply or point me to an example? I would appreciate an example that uses straight SQL as well as an example that makes a PL/SQL stored procedure call. Thanks in advance.

    Have you been here: http://download-east.oracle.com/docs/cd/B19306_01/appdev.102/b14250/oci05bnd.htm#i427075
    Also try the demonstration programs here: http://download-east.oracle.com/docs/cd/B19306_01/appdev.102/b14250/ociabdem.htm#i459676

  • Array interface for updates

    Hello I want to use array interface (iter parameter in OCIStmtExecute) in simple update statement:
    update A set column1 = 12 where column2 = :b
    the problem is that i cannot statically define array for my placeholder in OCIBindByPos, because b is a string (char*) and I don't know how many updates I will need.
    In this thread OCI in C - Is binding an array of character pointers possible?
    it is suggested to use a Piecewise Update.
    After reading it, it says that you need to call OCIStmtExecute multiply times, so I don't see how this minimises server roundtrips. Can anyone help me with this?
    Thanks

    If you use arrays , the server round trips are once per 2^32(65536) rows and not for each row.
    The pattern you have to use is as follows - which works for any data types.
    #define MAX_RECORD_INSERT 65535
    define the respective mapping arrays.
    OCIBind *bndHdl[100];
    int BindHdlCount =0,iterationCounter=0,bindCounter=0;
    long emp_no[MAX_RECORD_INSERT];
    char emp_name[MAX_RECORD_INSERT][256];
    create the SQL and do OCIHandleAlloc and OCIStmtPrepare
    start for loop ( For populating the array)
    ------------populate the arrarys here-----------------
    if (iterationCounter < MAX_RECORD_INSERT-1)
    {iterationCounter++;continue;}
    /*-------- Initialize INPUT Parameters --------*/
    for (BindHdlCount=0;BindHdlCount<TOTAL_ATTRIB_IN_SQL; BindHdlCount++)
    bndHdl[BindHdlCount] = 0;
    Us the respective OCIBindByPos here......
    OCIStmtExecute
    /*---------Check for Record Count---------------*/
    (void)OCIAttrGet((dvoid*)DBctx->stmthp,(ub4)OCI_HTYPE_STMT,
    (dvoid *)&p_sl_record_count, (ub4*)NULL,
    OCI_ATTR_ROW_COUNT, DBctx->errhp);
    if (p_sl_record_count != MAX_RECORD_INSERT)
    Error
    total_record_count+=iterationCounter;
    } // end of loop
    //Final Iteration- This is for partial round trips.
    if (iterationCounter>0)
    /*-------- Initialize INPUT Parameters --------*/
    for (BindHdlCount=0;BindHdlCount<TOTAL_ATTRIB_IN_SQL; BindHdlCount++)
    bndHdl[BindHdlCount] = 0;
    Us the respective OCIBindByPos here......
    OCIStmtExecute
    total_record_count+=iterationCounter
    total_record_count should match with total number of records in the arrary.
    THIS PATTERN WORKS well for 1024 Million records that I have tried.
    regards
    Prajith
    Message was edited by:
    prajithparan

  • A bug in the New Array(); code?

    Can anyone explain to me why this code:
    var myArray:Array = new Array(0119);
    doesn't work, but this code:
    var myArray:Array = new Array(0120);
    does?
    I've reported it to Adobe as a bug, because I can't see why a
    particular number causes an error.
    BTW, this same error:
    "**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 1: ')' or
    ',' expected
    var myArray:Array = new Array(0119);"
    also shows up using the number 0118.

    Thanks for the answer. I just got this e-mail from the Adobe
    bug report department which essentially says the same thing.
    "The compiler is getting confused because when you start a
    number with '0' it gets treated as a base-8 number. Since you can't
    have digits greater than 7 when using base-8 numbers, the compiler
    gets confused when you use a 9.
    Please use 119 if you meant to use decimal numbers. If you
    want to use
    base-8 numbers, then please convert 0119 to a valid base-8
    number."

  • [BUG]: Dll modifies input array constant

    Hi,
    Not really an important one, but some of you (Ben might like it... Tested
    in LV6, 6.1, 7.0 and 7.1.
    When a dll function modifies more (1d or 2d) input arrays, one constant is
    used to initialize them and less then all indicators are wired, LV
    overwrites the constant values...
    To reproduce this, I created a two dlls (one in assembler and one in
    LabVIEW, assembler one is attached). The dll fills the array with the number
    2.
    Run the VI, update the diagram (close and open again, or scroll). The values
    in the constant array now have the same values as the output array!
    This behavior is reproducible with (at least) 1d and 2d arrays, and (at
    least) U32 and DBLs.
    I'm sure other array data types (SGL, U8, I8 etc.) s
    how the same behavior,
    but pointers to scalar values do not. Perhaps strings also do this?
    Try putting a flat sequence frame around it, and put a few seconds wait
    before and after it. You can see the constant changing while the vi is
    running.
    Regards,
    Wiebe.
    [Attachment Callbug.dll, see below]
    [Attachment Callbug.vi, see below]
    Attachments:
    Callbug.dll ‏3 KB
    Callbug.vi ‏13 KB

    Ben,
    The topic from the advanced course does seem to be describing this. So this
    behavior doesn't seem to be a bug. I couldn't find anything about this in
    the "Using External Code in LabVIEW" manual.
    When pointers to values are used, the constants are not updated, so that is
    inconsistent, but it does say "may receive", so that is covered...
    Perhaps the only bug is the fact that the block diagram is not refreshed
    properly, after the values are changed... Just kidding...
    Next question is how to make use of this?
    Regards,
    Wiebe.
    "Ben" wrote in message
    news:50650000000500000078D30100-1079395200000@exch​ange.ni.com...
    > Hi Wiebe
    >
    > Your question reminds me of a phrase from proverbs
    >
    > "A wise man goes into his store house and brings forth treasures both
    > old and new".
    >
    > I was not able to find documentaion on the the call library function
    > that talks about this issue but I did find the following in the
    > "LabVIEW Advanced 1 Course Manual, August 1998 Edition, part number
    > 321366C-01 page 242".
    >
    > "If you do not wire an indicator to the output terminal of a terminal
    > pair, LabVIEW assumes that the CIN will not modify the value you pass
    > to it. If another node uses the input data, LabVIEW does not make a
    > copy of the data.
    >
    > Note: If you don't wire the output terminal, the source code should
    > not modify the value passed into the terminal. Nodes connected to the
    > input terminal wire may receive the modified data.
    > "
    >
    > This topic brought our class to a stand still when we(those who were
    > still awake) realized that data could flow backwards through a wire!
    >
    > I believe the behaviour you have observed is correct and the quote I
    > cited above.
    >
    > I will venture a guess that the requirement from the CLA exam
    > "CLD-VPP-03-04 ...Review a LabVIEW application for run-time behavoiur
    > and memory management issue, ....Destructive and non-destructive
    > buffer reads on branched wires"
    >
    > had the behaviour in mind.
    >
    > I posted a Q re:this req years ago but never got a definative answer.
    >
    > All of the above is just my opinion.
    >
    > I would love to hear from others.
    >
    > What do you think?
    >
    > Ben
    >
    > BTW: I do not think they teach that anymore.

  • Bug or Feature? Array Custom Contextual Menu Destroys "Delete" and "Insert" Element!

    Step to Reproduce:
    - Create an Array (doesn't matter of what type).
    - Ctrl-M (to switch to Run Mode)
    - Notice that:
           - when you Right-Click on the Array borders, you have access to an "Empty Array" menu item among other things
           - when you Right-Click in an Array element, you have access to an "Insert Element Before" and a "Delete Element" menu item among other things
    - Now switch back to Edit Mode and modify the contextual menu in the following way:
            - Advanced>>Run-Time Shortcut Menu>>Edit...
            - Edit>>Copy Entire Menu
            - Switch to "Custom" menu (instead of "Default"): the menu disappears and is replaced by a single ??? item
            - Edit>>Paste: The default menu reappears with the ??? on top
            - Create you favorite custom menu item by editing the ??? item (say: Do Nothing)
    - Save the menu with the control and switch to Run Mode (Ctrl-M).
    - Now try the first 3 steps above: wherever you right-click, you have access to the Custom Menu, but the Array Element contextual menu is GONE.
    In other words, you cannot (it seems) define a custom contextual menu for an array without destroying the default contextual menu for its elements.
    Therefore, if you want to preserve the ability to Insert and Delete Elements in an array, you have to add these two items to the Array contextual menu and juggle with the position of the right-click to figure out whether or not to display them...

    Well, I created in LabVIEW 2012 such a control and added part of the default menu in the way you described with copy-paste as a submenu to an Edit entry in my custom menu and it did not disappear:
    Rolf Kalbermatter
    CIT Engineering Netherlands
    a division of Test & Measurement Solutions

  • Bug in array indicator?

    I found very strange behaviour of Array Indicator (LV 8.20).
    If you look at attached VI, you will see that is very simple VI where only first element of Array should changed randomly every half of second while other element are 8.
    But if I click any element in Array indicator and move mous cursor over it, its value is changed although it should be 8 (see attached video).
    Does anyboby know why is this happening?
    Thanks!
    Attachments:
    Array indicator bug.vi ‏10 KB
    Array indicator.avi ‏176 KB

    Waow... funny bug... A quick work-around would be to set the indicateur as "Disable", but then the user won't be able to use the "index display".
    When my feet touch the ground each morning the devil thinks "bloody hell... He's up again!"

  • ITunes interface bug

    Hi,
    not sure if I got the right category, but here goes. I have this weird bug in iTunes, where all interface controls have a slightly darker background colour than the rest of the interface. It's incredibly annoying, and shows up in every dialogue in iTunes. I have no idea how to fix this, or what is causing it.
    iTunes 7.6.2 on 10.5.2
    Here is a screenshot of it: http://vivadyne.net/misc/itunes_bug.png
    Thanks in advance

    There's a software update for Leopard. Update your mac and see what happens.

  • New free/open-source tool to encapsulate the OCI interface

    Hello,
    Here is a short presentation and a link to a new free tool available on soureceforge.net.
    This tool is a powerful "wrapper" to encapsulate the OCI interface:
    Introduction
    OCILIB is a free, open source and platform independant library, written in C, that access Oracle Databases.
    The OCILIB library :
    * Encapsulates OCI (Oracle Call Interface which is powerful but complex)
    * Hides OCI complexity
    * Proposes instead a simple, readable and reusable API
    * Offers up to 310 simple and straightforward APIs.
    Introduction
    Current version : 2.3.0 (2008-03-30)
    Main features
    * Data binding
    * Integrated smart define and fetch mecanisms
    * Full Unicode support on all platorms
    * Multi row fetching
    * Binding array Interface for fast and massive bulk operations
    * Reusable Statements
    * Connection Pooling
    * Global Transactions
    * Returning DML feature support
    * ROWIDs support
    * Named Types (Object types) support (User or Builtin)
    * Cursors
    * PL/SQL blocks
    * PL/SQL Ref cursors and Nested tables
    * LOB (BLOBs/ FILEs)
    * Supports lobs > 4Go
    * Long datatype (piecewise operations)
    * Provides "All in one" Formatted functions (printf's like)
    * Smallest possible memory usage
    * Date/time management
    * Timestamps and Intervals support
    * Error handling
    * Describe database schema objects
    * Access columns by index or name
    * Hash tables API
    * Portable Threads and mutexes API
    * Supports static / shared oracle linkage
    * Support runtime loading (no OCI libs required at compile / time)
    * Great performances (straight OCI encapsulation)
    Download
    Get OCILIB from OCILIB Project page at Sourceforge Website:
    http://orclib.sourceforge.net/
    Hope this would help some of you ;D
    Francois

    Don't give up just because there are other options out there.
    Adobe is only giving up the free tool for education purposes, or unemployed developer.  You didn't say if you were one of those.
    I believe over time there will be plenty of room for alternate IDE approaches that support the Flex Framework; and in fact there are quite a few options already out there.

  • Using arrays as type for bind variable

    Hi all,
    I have this stored procedures that takes an array of strings as an argument:
    CREATE OR REPLACE PACKAGE mypackage AS
    TYPE StringArray IS VARRAY(100) OF VARCHAR2(16);
    PROCEDURE doSomething(v_strings IN StringArray);
    END;
    My java code looks something like:
    String[] strings = ...;
    CallableStatement cs = connection.prepareCall("CALL mypackage.doSomething(?)");
    cs.setObject(1, strings, java.sql.Types.ARRAY);
    calling the setObject method throws a SQLException: invalid column type.
    I have tried to change the call to:
    cs.setArray(1, new SqlStringArray(strings))
    where SqlStringArray is a wrapper around String[] that implements the java.sql.Array interface. This however throws a ClassCastException in oracle.jdbc.driver.OraclePreparedStatement. The latter is assuming it is receiving a class that implements yet another interface I guess.
    I also tried:
    cs.setObject(1, strings, java.sql.Types.VARCHAR);
    but that also throws a SqlException: invalid conversion requested
    Does anybody know how to bind String[] into a PreparedStatement?
    Any help is appreciated.
    Rudi.

    Made some progress. I am getting the OracleConnection from the WrappedConnection. This is a temporary solution for me so I would appreciate a final solution from anybody.
    I am now constructing a oracle.sql.ARRAY with an appropriate oracle.sql.ArrayDescriptor. I have found out that the type must be defined on a global level rather than in the scope of the package. Would be good if an Oracle expert could confirm that but I am happy to live with that.
    The IN parameter is correctly bound using the ARRAY instance but I am getting the following error when actually executing the statement:
    ORA-06512: Reference to uninitialized collection: at "BLUETEST_MYPACKAGE", line 57
    Now I have found quite some problem descriptions with that ORA error but all are dealing with OUT parameters that were not correctly initialized, i.e. the array constructor had not been called. In my case however, the array is initialized at by the java code and then bount to the sql statement. You would expect that the jdbc driver takes care of correctly initializing the PL/SQL collection wouldn't you.
    Does anybody know if I need to do anything extra?
    Many thanks,
    Rudi.

  • 2012 Dynamic Event Registration Array of Controls

    In upgrading to LV2012, I have discoverd what may be a bug, or at least an incompatability between 2011 and 2012 with respect dynamic event registration of an array of controls as opposed to individual control references.
    This bit of code worked in 2011 but doesn't in 2012, with error 1 generated at the reg events block when run in 2012. I have been in contact with technical support, but haven't yet heard their take on this.
    Any thoughts.
    Solved!
    Go to Solution.
    Attachments:
    Top Application.png ‏13 KB
    SubVI.png ‏23 KB

    I've got the bug too -- it appears this bug is present when arrays of control refs are connected to the ConPane. Link to cross-post on LAVA about the original problem. As Patrick@Vision mentions above, one workaround is to ensure that the array of control refs is no longer on the ConPane by collapsing the Register for Events node onto the caller.
    a.lia-user-name-link[href="/t5/user/viewprofilepage/user-id/88938"] {color: black;} a.lia-user-name-link[href="/t5/user/viewprofilepage/user-id/88938"]:after {content: '';} .jrd-sig {height: 80px; overflow: visible;} .jrd-sig-deploy {float:left; opacity:0.2;} .jrd-sig-img {float:right; opacity:0.2;} .jrd-sig-img:hover {opacity:0.8;} .jrd-sig-deploy:hover {opacity:0.8;}

  • Solaris 10 /dev/poll bug

    Solaris 10, at least on my T2000, seems to give me an EINVAL from the DP_POLL ioctl in a case where it shouldn't. The below example code should clarify:
    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/types.h>
    #include <fcntl.h>
    #include <errno.h>
    #include <limits.h>
    #include <sys/resource.h>
    #include <sys/devpoll.h>
    This program demonstrates what seems to be a bug in the /dev/poll interface
    on Solaris 10 on our T2000. The man page says:
    EINVAL The request or arg parameter is not valid
    for this device, or field of the dvpoll
    struct pointed by arg is not valid (for
    example, dp_nfds is greater than
    {OPEN_MAX}).
    But in this case, we get EINVAL even though dp_nfds is not greater than
    OPEN_MAX.
    void fatal(const char *f)
    fprintf(stderr, "Unable to show problem: %s\n", f);
    exit(1);
    int main(void)
    struct rlimit r;
    struct pollfd pfd[256];
    struct dvpoll dp;
    int i;
    if(getrlimit(RLIMIT_NOFILE, &r)!=0) fatal("unable to get file limit");
    if(r.rlim_cur!=256) fatal("set fd limit to 256");
    if(OPEN_MAX!=256) fatal("OPEN_MAX must be 256");
    i=open("/dev/poll", O_RDWR);
    if(i<0) fatal("unable to open /dev/poll");
    dp.dp_timeout=0;
    dp.dp_nfds=256; /* Changing this to 255 fixes the problem */
    dp.dp_fds=pfd;
    if(ioctl(i, DP_POLL, &dp)==0) fatal("it does not appear on this system");
    printf("errno=%d - Why?\n", errno);
    Any ideas?

    I ran into the same problem. /dev/poll is too smart for its own good here. You can't monitor your /dev/poll file descriptor using /dev/poll, so the actual maximum number of file descriptors you can monitor is OPEN_MAX - 1. Solaris enforces that limit.
    This breaks other code out there too, e.g. the libevent library. Annoying even though it's arguably technically correct.

  • Scheduled Tasks - same bug 6 years on

    About 6 years ago I noticed an annoying bug in the CF5 admin
    interface when editing a scheduled task. A previously entered value
    for a recurring daily time always vanishes as if you never entered
    one in the first place.
    I admit that I skipped CF6 and jumped straight from 5 to 7 so
    perhaps this bug was fixed in CF6, but it's staring me in the face
    on version 7, like an old enemy who you can never escape from.
    Adobe - is this still on your bug list? It will be drawing
    its pension soon! ;-)

    Sure I'm running hotfix 2. Without it that would be like
    running an original shrink wrapped version of Windows without any
    of its 100's of patches. ;-) Or is that 1000's? I've lost
    count.

  • Interface Builder - Custom images not visible in Cocoa Simulator

    I'm very new to this, and just toying around with Interface Builder more than anything at this stage…
    Anyway, my problem… I've created some of my own images to place on buttons, etc. I've saved them in PNG format and dragged them into the Resources folder of my Xcode project, so they become available in Interface Builder's media library. I can drag them onto my window just fine, but when I test the UI with the 'Simulate Interface' command, the images disappear completely.
    Any ideas?

    This was changed in Interface Builder 3.0. Now, you have to click on the "Connections" tab in the object's Info panel. I think it is the 2nd one from the right. You will recognize it because you will see all your outlets. You click the little circle next to the outlet and drag a line over the user interface object to make the connection. Once you do that, there is a bug in Interface Builder that will blank out the info panel. You will have to select some other object to redisplay any information, then click back to your original object. The bindings panel has a similar set of bugs. Suffice to say, Interface Builder 3.0 is a work in progress.
    PS - to break a connection, click the little X button next to an outlet name.

  • Serious UIR selection bug

    Hello all,
    I hope you can reproduce this bug as well as I do because this is major bug.
    In the user interface editor, I have a large canvas with a loaded image that covers the entire panel (1200x800). It's used as a background with a whole bunch of controls on top (about 150). When I start selecting controls with Shift-Clic, the entire PC locks up after about 4~5 selections. The only thing I can do is press Reset on the mobo! If I move the canvas out of the way, it doesn't happen.
    I've had problems with corrupted UIR files in the past, but that's a recently created one.
    Using CVI 2012.

    Hello,
    I had 5 crashes due to this in 2 days last week, but today I can't make it happen again, even though I haven't closed CVI since the last one. Will post again if I can reproduce it. 

Maybe you are looking for

  • Does anybody knows where can i buy a replacement AC power cable for my cinema display 27"?

    Does anybody knows where can i buy a replacement AC power cable for my cinema display 27"?

  • No sound except Flash, volume control doesn't work for that.

    My sound seems to be cursed. Everything else works fine for me, but in the few years I've been using Arch I've been plagued by constant sound problems. Apparently something in a recent update broke my sound. I get no sound for anything but Flash, exc

  • File Corrupted in E-Mail Set up N97

    I just bought a used N97 on ebay to replace mine which was lost. So far it hasn't been plain sailing syncing from my pc. One of the problems I have is in email set up, where I want to sync my Gmail account I go to the set up. I get "preparing install

  • CRUD insert problems.

    Hello all, I was wondering about DB operations in JSF pages, so I took a look over the Single Page CRUD example. What hitted me was there is a need for a two step insertion, first by issuing a select in search for the biggest ID of the primary key, a

  • Download of SAP Installation DVDs

    Dear All, Our customer had ordered media for Solaris platform. But now they want to setup sandbox system (retail server) on Win 2003 server. After comparing material numbers I figured that I need to download RDBMS Oracle for Windows from marketplace,