|
1 | 1 | /* |
2 | | - * $Header: /cvsroot/pgsql/src/test/regress/regress.c,v 1.33 1999/07/17 20:18:52 momjian Exp $ |
| 2 | + * $Header: /cvsroot/pgsql/src/test/regress/regress.c,v 1.34 1999/10/22 02:08:37 tgl Exp $ |
3 | 3 | */ |
4 | 4 |
|
5 | 5 | #include <float.h> /* faked on sunos */ |
@@ -317,7 +317,9 @@ funny_dup17() |
317 | 317 | Relation rel; |
318 | 318 | TupleDesc tupdesc; |
319 | 319 | HeapTuple tuple; |
320 | | - char sql[MAX_QUERY_SIZE]; |
| 320 | + char *query, |
| 321 | + *fieldval, |
| 322 | + *fieldtype; |
321 | 323 | char *when; |
322 | 324 | int inserted; |
323 | 325 | int selected = 0; |
@@ -363,25 +365,29 @@ funny_dup17() |
363 | 365 |
|
364 | 366 | SPI_connect(); |
365 | 367 |
|
366 | | - sprintf(sql, "insert into %s select * from %s where %s = '%s'::%s", |
| 368 | + fieldval = SPI_getvalue(tuple, tupdesc, 1); |
| 369 | + fieldtype = SPI_gettype(tupdesc, 1); |
| 370 | + |
| 371 | + query = (char *) palloc(100 + NAMEDATALEN*3 + |
| 372 | + strlen(fieldval) + strlen(fieldtype)); |
| 373 | + |
| 374 | + sprintf(query, "insert into %s select * from %s where %s = '%s'::%s", |
367 | 375 | SPI_getrelname(rel), SPI_getrelname(rel), |
368 | 376 | SPI_fname(tupdesc, 1), |
369 | | - SPI_getvalue(tuple, tupdesc, 1), |
370 | | - SPI_gettype(tupdesc, 1)); |
| 377 | + fieldval, fieldtype); |
371 | 378 |
|
372 | | - if ((ret = SPI_exec(sql, 0)) < 0) |
| 379 | + if ((ret = SPI_exec(query, 0)) < 0) |
373 | 380 | elog(ERROR, "funny_dup17 (fired %s) on level %3d: SPI_exec (insert ...) returned %d", |
374 | 381 | when, *level, ret); |
375 | 382 |
|
376 | 383 | inserted = SPI_processed; |
377 | 384 |
|
378 | | - sprintf(sql, "select count (*) from %s where %s = '%s'::%s", |
| 385 | + sprintf(query, "select count (*) from %s where %s = '%s'::%s", |
379 | 386 | SPI_getrelname(rel), |
380 | 387 | SPI_fname(tupdesc, 1), |
381 | | - SPI_getvalue(tuple, tupdesc, 1), |
382 | | - SPI_gettype(tupdesc, 1)); |
| 388 | + fieldval, fieldtype); |
383 | 389 |
|
384 | | - if ((ret = SPI_exec(sql, 0)) < 0) |
| 390 | + if ((ret = SPI_exec(query, 0)) < 0) |
385 | 391 | elog(ERROR, "funny_dup17 (fired %s) on level %3d: SPI_exec (select ...) returned %d", |
386 | 392 | when, *level, ret); |
387 | 393 |
|
@@ -561,24 +567,25 @@ ttdummy() |
561 | 567 | { |
562 | 568 | void *pplan; |
563 | 569 | Oid *ctypes; |
564 | | - char sql[MAX_QUERY_SIZE]; |
| 570 | + char *query; |
565 | 571 |
|
566 | | - /* allocate ctypes for preparation */ |
| 572 | + /* allocate space in preparation */ |
567 | 573 | ctypes = (Oid *) palloc(natts * sizeof(Oid)); |
| 574 | + query = (char *) palloc(100 + 16 * natts); |
568 | 575 |
|
569 | 576 | /* |
570 | 577 | * Construct query: INSERT INTO _relation_ VALUES ($1, ...) |
571 | 578 | */ |
572 | | - sprintf(sql, "INSERT INTO %s VALUES (", relname); |
| 579 | + sprintf(query, "INSERT INTO %s VALUES (", relname); |
573 | 580 | for (i = 1; i <= natts; i++) |
574 | 581 | { |
575 | | - sprintf(sql + strlen(sql), "$%d%s", |
| 582 | + sprintf(query + strlen(query), "$%d%s", |
576 | 583 | i, (i < natts) ? ", " : ")"); |
577 | 584 | ctypes[i - 1] = SPI_gettypeid(tupdesc, i); |
578 | 585 | } |
579 | 586 |
|
580 | 587 | /* Prepare plan for query */ |
581 | | - pplan = SPI_prepare(sql, natts, ctypes); |
| 588 | + pplan = SPI_prepare(query, natts, ctypes); |
582 | 589 | if (pplan == NULL) |
583 | 590 | elog(ERROR, "ttdummy (%s): SPI_prepare returned %d", relname, SPI_result); |
584 | 591 |
|
|
0 commit comments