mirror of
https://github.com/postgres/postgres.git
synced 2025-06-03 01:21:48 +03:00
Refactor Copy{From|To}GetRoutine() to use pass-by-reference argument.
The change improves efficiency by eliminating unnecessary copying of CopyFormatOptions. The coverity also complained about inefficiencies caused by pass-by-value. Oversight in 7717f6300 and 2e4127b6d. Reported-by: Junwang Zhao <zhjwpku@gmail.com> Reported-by: Tom Lane <tgl@sss.pgh.pa.us> (per reports from coverity) Author: Sutou Kouhei <kou@clear-code.com> Reviewed-by: Junwang Zhao <zhjwpku@gmail.com> Reviewed-by: Masahiko Sawada <sawada.mshk@gmail.com> Discussion: https://postgr.es/m/CAEG8a3L6YCpPksTQMzjD_CvwDEhW3D_t=5md9BvvdOs5k+TA=Q@mail.gmail.com
This commit is contained in:
parent
0b2a45a5d1
commit
bacbc4863b
@ -153,11 +153,11 @@ static const CopyFromRoutine CopyFromRoutineBinary = {
|
||||
|
||||
/* Return a COPY FROM routine for the given options */
|
||||
static const CopyFromRoutine *
|
||||
CopyFromGetRoutine(CopyFormatOptions opts)
|
||||
CopyFromGetRoutine(const CopyFormatOptions *opts)
|
||||
{
|
||||
if (opts.csv_mode)
|
||||
if (opts->csv_mode)
|
||||
return &CopyFromRoutineCSV;
|
||||
else if (opts.binary)
|
||||
else if (opts->binary)
|
||||
return &CopyFromRoutineBinary;
|
||||
|
||||
/* default is text */
|
||||
@ -1574,7 +1574,7 @@ BeginCopyFrom(ParseState *pstate,
|
||||
ProcessCopyOptions(pstate, &cstate->opts, true /* is_from */ , options);
|
||||
|
||||
/* Set the format routine */
|
||||
cstate->routine = CopyFromGetRoutine(cstate->opts);
|
||||
cstate->routine = CopyFromGetRoutine(&cstate->opts);
|
||||
|
||||
/* Process the target relation */
|
||||
cstate->rel = rel;
|
||||
|
@ -174,11 +174,11 @@ static const CopyToRoutine CopyToRoutineBinary = {
|
||||
|
||||
/* Return a COPY TO routine for the given options */
|
||||
static const CopyToRoutine *
|
||||
CopyToGetRoutine(CopyFormatOptions opts)
|
||||
CopyToGetRoutine(const CopyFormatOptions *opts)
|
||||
{
|
||||
if (opts.csv_mode)
|
||||
if (opts->csv_mode)
|
||||
return &CopyToRoutineCSV;
|
||||
else if (opts.binary)
|
||||
else if (opts->binary)
|
||||
return &CopyToRoutineBinary;
|
||||
|
||||
/* default is text */
|
||||
@ -700,7 +700,7 @@ BeginCopyTo(ParseState *pstate,
|
||||
ProcessCopyOptions(pstate, &cstate->opts, false /* is_from */ , options);
|
||||
|
||||
/* Set format routine */
|
||||
cstate->routine = CopyToGetRoutine(cstate->opts);
|
||||
cstate->routine = CopyToGetRoutine(&cstate->opts);
|
||||
|
||||
/* Process the source/target relation or query */
|
||||
if (rel)
|
||||
|
Loading…
x
Reference in New Issue
Block a user