| 486 | } |
| 487 | |
| 488 | DatumStreamWrite * |
| 489 | create_datumstreamwrite( |
| 490 | char *compName, |
| 491 | int32 compLevel, |
| 492 | bool checksum, |
| 493 | int32 maxsz, |
| 494 | Form_pg_attribute attr, |
| 495 | char *relname, |
| 496 | Oid reloid, |
| 497 | char *title, |
| 498 | bool needsWAL, |
| 499 | RelFileNodeBackend *rnode, |
| 500 | const struct f_smgr_ao *smgrAO) |
| 501 | { |
| 502 | DatumStreamWrite *acc = palloc0(sizeof(DatumStreamWrite)); |
| 503 | |
| 504 | int32 initialMaxDatumPerBlock; |
| 505 | int32 maxDatumPerBlock; |
| 506 | |
| 507 | PGFunction *compressionFunctions; |
| 508 | CompressionState *compressionState; |
| 509 | |
| 510 | CompressionState *verifyBlockCompressionState; |
| 511 | |
| 512 | init_datumstream_info( |
| 513 | &acc->typeInfo, |
| 514 | &acc->datumStreamVersion, |
| 515 | &acc->rle_want_compression, |
| 516 | &acc->delta_want_compression, |
| 517 | &acc->ao_attr, |
| 518 | &acc->maxAoBlockSize, |
| 519 | compName, |
| 520 | compLevel, |
| 521 | checksum, |
| 522 | maxsz, |
| 523 | attr); |
| 524 | |
| 525 | compressionFunctions = NULL; |
| 526 | compressionState = NULL; |
| 527 | verifyBlockCompressionState = NULL; |
| 528 | if (acc->ao_attr.compress) |
| 529 | { |
| 530 | /* |
| 531 | * BULK compression. |
| 532 | */ |
| 533 | compressionFunctions = get_funcs_for_compression(acc->ao_attr.compressType); |
| 534 | if (compressionFunctions != NULL) |
| 535 | { |
| 536 | TupleDesc td = CreateTupleDesc(1, &attr); |
| 537 | StorageAttributes sa; |
| 538 | |
| 539 | sa.comptype = acc->ao_attr.compressType; |
| 540 | sa.complevel = acc->ao_attr.compressLevel; |
| 541 | sa.blocksize = acc->maxAoBlockSize; |
| 542 | |
| 543 | compressionState = |
| 544 | callCompressionConstructor( |
| 545 | compressionFunctions[COMPRESSION_CONSTRUCTOR], td, &sa, /* compress */ true); |
no test coverage detected