Skip to content

Commit 3412030

Browse files
committed
Fix more typos and inconsistencies in the tree
Author: Alexander Lakhin Discussion: https://postgr.es/m/0a5419ea-1452-a4e6-72ff-545b1a5a8076@gmail.com
1 parent 9d20b0e commit 3412030

File tree

41 files changed

+56
-56
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+56
-56
lines changed

contrib/jsonb_plpython/jsonb_plpython.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ PLyObject_FromJsonbValue(JsonbValue *jsonbValue)
133133
}
134134

135135
/*
136-
* PLyObject_FromJsonb
136+
* PLyObject_FromJsonbContainer
137137
*
138138
* Transform JsonbContainer to PyObject.
139139
*/

contrib/pg_prewarm/autoprewarm.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ apw_load_buffers(void)
356356
Oid current_db = blkinfo[j].database;
357357

358358
/*
359-
* Advance the prewarm_stop_idx to the first BlockRecordInfo that does
359+
* Advance the prewarm_stop_idx to the first BlockInfoRecord that does
360360
* not belong to this database.
361361
*/
362362
j++;
@@ -365,7 +365,7 @@ apw_load_buffers(void)
365365
if (current_db != blkinfo[j].database)
366366
{
367367
/*
368-
* Combine BlockRecordInfos for global objects with those of
368+
* Combine BlockInfoRecords for global objects with those of
369369
* the database.
370370
*/
371371
if (current_db != InvalidOid)
@@ -378,7 +378,7 @@ apw_load_buffers(void)
378378

379379
/*
380380
* If we reach this point with current_db == InvalidOid, then only
381-
* BlockRecordInfos belonging to global objects exist. We can't
381+
* BlockInfoRecords belonging to global objects exist. We can't
382382
* prewarm without a database connection, so just bail out.
383383
*/
384384
if (current_db == InvalidOid)

contrib/pg_trgm/trgm_op.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -500,7 +500,7 @@ iterate_word_similarity(int *trg2indexes,
500500
word_similarity_threshold;
501501

502502
/*
503-
* Consider first trigram as initial lower bount for strict word
503+
* Consider first trigram as initial lower bound for strict word
504504
* similarity, or initialize it later with first trigram present for plain
505505
* word similarity.
506506
*/

src/backend/access/common/session.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ GetSessionDsmHandle(void)
133133
* If we got this far, we can pin the shared memory so it stays mapped for
134134
* the rest of this backend's life. If we don't make it this far, cleanup
135135
* callbacks for anything we installed above (ie currently
136-
* SharedRecordTypemodRegistry) will run when the DSM segment is detached
136+
* SharedRecordTypmodRegistry) will run when the DSM segment is detached
137137
* by CurrentResourceOwner so we aren't left with a broken CurrentSession.
138138
*/
139139
dsm_pin_mapping(seg);

src/backend/access/hash/hash.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ hashgetbitmap(IndexScanDesc scan, TIDBitmap *tbm)
340340

341341
/*
342342
* _hash_first and _hash_next handle eliminate dead index entries
343-
* whenever scan->ignored_killed_tuples is true. Therefore, there's
343+
* whenever scan->ignore_killed_tuples is true. Therefore, there's
344344
* nothing to do here except add the results to the TIDBitmap.
345345
*/
346346
tbm_add_tuples(tbm, &(currItem->heapTid), 1, true);

src/backend/access/transam/xact.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3364,7 +3364,7 @@ PreventInTransactionBlock(bool isTopLevel, const char *stmtType)
33643364
}
33653365

33663366
/*
3367-
* WarnNoTranactionBlock
3367+
* WarnNoTransactionBlock
33683368
* RequireTransactionBlock
33693369
*
33703370
* These two functions allow for warnings or errors if a command is executed

src/backend/catalog/index.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -528,7 +528,7 @@ AppendAttributeTuples(Relation indexRelation, int numatts)
528528
static void
529529
UpdateIndexRelation(Oid indexoid,
530530
Oid heapoid,
531-
Oid parentIndexOid,
531+
Oid parentIndexId,
532532
IndexInfo *indexInfo,
533533
Oid *collationOids,
534534
Oid *classOids,

src/backend/catalog/partition.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ get_default_partition_oid(Oid parentId)
319319
/*
320320
* update_default_partition_oid
321321
*
322-
* Update pg_partition_table.partdefid with a new default partition OID.
322+
* Update pg_partitioned_table.partdefid with a new default partition OID.
323323
*/
324324
void
325325
update_default_partition_oid(Oid parentId, Oid defaultPartId)

src/backend/commands/copy.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -829,8 +829,8 @@ CopyLoadRawBuf(CopyState cstate)
829829
* input/output stream. The latter could be either stdin/stdout or a
830830
* socket, depending on whether we're running under Postmaster control.
831831
*
832-
* Do not allow a Postgres user without the 'pg_access_server_files' role to
833-
* read from or write to a file.
832+
* Do not allow a Postgres user without the 'pg_read_server_files' or
833+
* 'pg_write_server_files' role to read from or write to a file.
834834
*
835835
* Do not allow the copy if user doesn't have proper permission to access
836836
* the table or the specifically requested columns.

src/backend/commands/functioncmds.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ compute_return_type(TypeName *returnType, Oid languageOid,
170170
* Input parameters:
171171
* parameters: list of FunctionParameter structs
172172
* languageOid: OID of function language (InvalidOid if it's CREATE AGGREGATE)
173-
* is_aggregate: needed only to determine error handling
173+
* objtype: needed only to determine error handling and required result type
174174
*
175175
* Results are stored into output parameters. parameterTypes must always
176176
* be created, but the other arrays are set to NULL if not needed.

src/backend/executor/execMain.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2876,8 +2876,9 @@ EvalPlanQualStart(EPQState *epqstate, EState *parentestate, Plan *planTree)
28762876

28772877
/*
28782878
* Each EState must have its own es_epqScanDone state, but if we have
2879-
* nested EPQ checks they should share es_epqTuple arrays. This allows
2880-
* sub-rechecks to inherit the values being examined by an outer recheck.
2879+
* nested EPQ checks they should share es_epqTupleSlot arrays. This
2880+
* allows sub-rechecks to inherit the values being examined by an outer
2881+
* recheck.
28812882
*/
28822883
estate->es_epqScanDone = (bool *) palloc0(rtsize * sizeof(bool));
28832884
if (parentestate->es_epqTupleSlot != NULL)

src/backend/executor/execUtils.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -642,7 +642,7 @@ ExecAssignScanType(ScanState *scanstate, TupleDesc tupDesc)
642642
}
643643

644644
/* ----------------
645-
* ExecCreateSlotFromOuterPlan
645+
* ExecCreateScanSlotFromOuterPlan
646646
* ----------------
647647
*/
648648
void

src/backend/executor/nodeHash.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1049,8 +1049,8 @@ ExecHashIncreaseNumBatches(HashJoinTable hashtable)
10491049

10501050
/*
10511051
* ExecParallelHashIncreaseNumBatches
1052-
* Every participant attached to grow_barrier must run this function
1053-
* when it observes growth == PHJ_GROWTH_NEED_MORE_BATCHES.
1052+
* Every participant attached to grow_batches_barrier must run this
1053+
* function when it observes growth == PHJ_GROWTH_NEED_MORE_BATCHES.
10541054
*/
10551055
static void
10561056
ExecParallelHashIncreaseNumBatches(HashJoinTable hashtable)
@@ -1106,7 +1106,7 @@ ExecParallelHashIncreaseNumBatches(HashJoinTable hashtable)
11061106
* The combined work_mem of all participants wasn't
11071107
* enough. Therefore one batch per participant would be
11081108
* approximately equivalent and would probably also be
1109-
* insufficient. So try two batches per particiant,
1109+
* insufficient. So try two batches per participant,
11101110
* rounded up to a power of two.
11111111
*/
11121112
new_nbatch = 1 << my_log2(pstate->nparticipants * 2);
@@ -1674,7 +1674,7 @@ ExecHashTableInsert(HashJoinTable hashtable,
16741674
}
16751675

16761676
/*
1677-
* ExecHashTableParallelInsert
1677+
* ExecParallelHashTableInsert
16781678
* insert a tuple into a shared hash table or shared batch tuplestore
16791679
*/
16801680
void

src/backend/executor/nodeProjectSet.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -297,11 +297,12 @@ ExecInitProjectSet(ProjectSet *node, EState *estate, int eflags)
297297
Assert(node->plan.qual == NIL);
298298

299299
/*
300-
* Create a memory context that ExecMakeFunctionResult can use to evaluate
301-
* function arguments in. We can't use the per-tuple context for this
302-
* because it gets reset too often; but we don't want to leak evaluation
303-
* results into the query-lifespan context either. We use one context for
304-
* the arguments of all tSRFs, as they have roughly equivalent lifetimes.
300+
* Create a memory context that ExecMakeFunctionResultSet can use to
301+
* evaluate function arguments in. We can't use the per-tuple context for
302+
* this because it gets reset too often; but we don't want to leak
303+
* evaluation results into the query-lifespan context either. We use one
304+
* context for the arguments of all tSRFs, as they have roughly equivalent
305+
* lifetimes.
305306
*/
306307
state->argcontext = AllocSetContextCreate(CurrentMemoryContext,
307308
"tSRF function arguments",

src/backend/jit/llvm/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ endif
2222
PGFILEDESC = "llvmjit - JIT using LLVM"
2323
NAME = llvmjit
2424

25-
# All files in this directy use LLVM.
25+
# All files in this directory use LLVM.
2626
CFLAGS += $(LLVM_CFLAGS)
2727
CXXFLAGS += $(LLVM_CXXFLAGS)
2828
override CPPFLAGS := $(LLVM_CPPFLAGS) $(CPPFLAGS)

src/backend/lib/integerset.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ struct IntegerSet
261261
* Prototypes for internal functions.
262262
*/
263263
static void intset_update_upper(IntegerSet *intset, int level,
264-
intset_node *new_node, uint64 new_node_item);
264+
intset_node *child, uint64 child_key);
265265
static void intset_flush_buffered_values(IntegerSet *intset);
266266

267267
static int intset_binsrch_uint64(uint64 value, uint64 *arr, int arr_elems,

src/backend/libpq/pqformat.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ pq_endmessage(StringInfo buf)
308308
* pq_endmessage_reuse - send the completed message to the frontend
309309
*
310310
* The data buffer is *not* freed, allowing to reuse the buffer with
311-
* pg_beginmessage_reuse.
311+
* pq_beginmessage_reuse.
312312
--------------------------------
313313
*/
314314

src/backend/replication/walsender.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1087,7 +1087,8 @@ StartLogicalReplication(StartReplicationCmd *cmd)
10871087
* Create our decoding context, making it start at the previously ack'ed
10881088
* position.
10891089
*
1090-
* Do this before sending CopyBoth, so that any errors are reported early.
1090+
* Do this before sending a CopyBothResponse message, so that any errors
1091+
* are reported early.
10911092
*/
10921093
logical_decoding_ctx =
10931094
CreateDecodingContext(cmd->startpoint, cmd->options, false,

src/backend/statistics/mcv.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1315,7 +1315,7 @@ pg_mcv_list_in(PG_FUNCTION_ARGS)
13151315

13161316

13171317
/*
1318-
* pg_mcv_list_out - output routine for type PG_MCV_LIST.
1318+
* pg_mcv_list_out - output routine for type pg_mcv_list.
13191319
*
13201320
* MCV lists are serialized into a bytea value, so we simply call byteaout()
13211321
* to serialize the value into text. But it'd be nice to serialize that into

src/backend/storage/file/fd.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1592,7 +1592,7 @@ OpenTemporaryFileInTablespace(Oid tblspcOid, bool rejectError)
15921592
* If the file is inside the top-level temporary directory, its name should
15931593
* begin with PG_TEMP_FILE_PREFIX so that it can be identified as temporary
15941594
* and deleted at startup by RemovePgTempFiles(). Alternatively, it can be
1595-
* inside a directory created with PathnameCreateTemporaryDir(), in which case
1595+
* inside a directory created with PathNameCreateTemporaryDir(), in which case
15961596
* the prefix isn't needed.
15971597
*/
15981598
File

src/backend/storage/file/sharedfileset.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ SharedFileSetOpen(SharedFileSet *fileset, const char *name)
143143
}
144144

145145
/*
146-
* Delete a file that was created with PathNameCreateShared().
146+
* Delete a file that was created with SharedFileSetCreate().
147147
* Return true if the file existed, false if didn't.
148148
*/
149149
bool

src/backend/storage/ipc/barrier.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ BarrierInit(Barrier *barrier, int participants)
113113
* too and then return. Increments the current phase. The caller must be
114114
* attached.
115115
*
116-
* While waiting, pg_stat_activity shows a wait_event_class and wait_event
116+
* While waiting, pg_stat_activity shows a wait_event_type and wait_event
117117
* controlled by the wait_event_info passed in, which should be a value from
118118
* one of the WaitEventXXX enums defined in pgstat.h.
119119
*

src/backend/storage/ipc/shm_mq.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1238,7 +1238,7 @@ shm_mq_inc_bytes_written(shm_mq *mq, Size n)
12381238
/*
12391239
* Separate prior reads of mq_ring from the write of mq_bytes_written
12401240
* which we're about to do. Pairs with the read barrier found in
1241-
* shm_mq_get_receive_bytes.
1241+
* shm_mq_receive_bytes.
12421242
*/
12431243
pg_write_barrier();
12441244

src/backend/utils/Gen_fmgrtab.pl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@
230230
|, $last_builtin_oid;
231231

232232

233-
# Create fmgr_builtins_oid_index table.
233+
# Create fmgr_builtin_oid_index table.
234234
printf $tfh qq|
235235
const uint16 fmgr_builtin_oid_index[%u] = {
236236
|, $last_builtin_oid + 1;

src/backend/utils/adt/jsonfuncs.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ typedef struct OkeysState
5353
int sent_count;
5454
} OkeysState;
5555

56-
/* state for iterate_json_string_values function */
56+
/* state for iterate_json_values function */
5757
typedef struct IterateJsonStringValuesState
5858
{
5959
JsonLexContext *lex;

src/backend/utils/sort/sharedtuplestore.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ sts_initialize(SharedTuplestore *sts, int participants,
173173
}
174174

175175
/*
176-
* Attach to a SharedTupleStore that has been initialized by another backend,
176+
* Attach to a SharedTuplestore that has been initialized by another backend,
177177
* so that this backend can read and write tuples.
178178
*/
179179
SharedTuplestoreAccessor *

src/bin/pg_dump/common.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ flagInhTables(Archive *fout, TableInfo *tblinfo, int numTables,
327327

328328
/*
329329
* flagInhIndexes -
330-
* Create AttachIndexInfo objects for partitioned indexes, and add
330+
* Create IndexAttachInfo objects for partitioned indexes, and add
331331
* appropriate dependency links.
332332
*/
333333
static void

src/include/access/xlogdefs.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ typedef uint64 XLogRecPtr;
2222

2323
/*
2424
* Zero is used indicate an invalid pointer. Bootstrap skips the first possible
25-
* WAL segment, initializing the first WAL page at XLOG_SEG_SIZE, so no XLOG
25+
* WAL segment, initializing the first WAL page at WAL segment size, so no XLOG
2626
* record can begin at zero.
2727
*/
2828
#define InvalidXLogRecPtr 0

src/include/catalog/partition.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,6 @@ extern bool has_partition_attrs(Relation rel, Bitmapset *attnums,
3030

3131
extern Oid get_default_partition_oid(Oid parentId);
3232
extern void update_default_partition_oid(Oid parentId, Oid defaultPartId);
33-
extern List *get_proposed_default_constraint(List *new_part_constaints);
33+
extern List *get_proposed_default_constraint(List *new_part_constraints);
3434

3535
#endif /* PARTITION_H */

src/include/catalog/pg_foreign_data_wrapper.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ CATALOG(pg_foreign_data_wrapper,2328,ForeignDataWrapperRelationId)
4141
} FormData_pg_foreign_data_wrapper;
4242

4343
/* ----------------
44-
* Form_pg_fdw corresponds to a pointer to a tuple with
45-
* the format of pg_fdw relation.
44+
* Form_pg_foreign_data_wrapper corresponds to a pointer to a tuple with
45+
* the format of pg_foreign_data_wrapper relation.
4646
* ----------------
4747
*/
4848
typedef FormData_pg_foreign_data_wrapper *Form_pg_foreign_data_wrapper;

src/include/executor/tuptable.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@
6868
* A TupleTableSlot can also be "empty", indicated by flag TTS_FLAG_EMPTY set
6969
* in tts_flags, holding no valid data. This is the only valid state for a
7070
* freshly-created slot that has not yet had a tuple descriptor assigned to
71-
* it. In this state, TTS_SHOULDFREE should not be set in tts_flag, tts_tuple
72-
* must be NULL, tts_buffer InvalidBuffer, and tts_nvalid zero.
71+
* it. In this state, TTS_SHOULDFREE should not be set in tts_flags, tts_tuple
72+
* must be NULL and tts_nvalid zero.
7373
*
7474
* The tupleDescriptor is simply referenced, not copied, by the TupleTableSlot
7575
* code. The caller of ExecSetSlotDescriptor() is responsible for providing
@@ -87,7 +87,7 @@
8787
* the descriptor is provided), or when a descriptor is assigned to the slot;
8888
* they are of length equal to the descriptor's natts.
8989
*
90-
* The TTS_FLAG_SLOW flag and tts_off are saved state for
90+
* The TTS_FLAG_SLOW flag is saved state for
9191
* slot_deform_heap_tuple, and should not be touched by any other code.
9292
*----------
9393
*/

src/include/optimizer/placeholder.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,5 @@ extern void fix_placeholder_input_needed_levels(PlannerInfo *root);
2828
extern void add_placeholders_to_base_rels(PlannerInfo *root);
2929
extern void add_placeholders_to_joinrel(PlannerInfo *root, RelOptInfo *joinrel,
3030
RelOptInfo *outer_rel, RelOptInfo *inner_rel);
31-
extern void add_placeholders_to_child_joinrel(PlannerInfo *root,
32-
RelOptInfo *childrel, RelOptInfo *parentrel);
3331

3432
#endif /* PLACEHOLDER_H */

src/include/partitioning/partprune.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ struct RelOptInfo;
4141
* subsidiary data, such as the FmgrInfos.
4242
* planstate Points to the parent plan node's PlanState when called
4343
* during execution; NULL when called from the planner.
44-
* exprstates Array of ExprStates, indexed as per PruneCtxStateIdx; one
44+
* exprstates Array of ExprStates, indexed as per PruneCxtStateIdx; one
4545
* for each partition key in each pruning step. Allocated if
4646
* planstate is non-NULL, otherwise NULL.
4747
*/

src/include/port/pg_bitutils.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ pg_leftmost_one_pos64(uint64 word)
6767
shift -= 8;
6868

6969
return shift + pg_leftmost_one_pos[(word >> shift) & 255];
70-
#endif /* HAVE__BUIILTIN_CLZ */
70+
#endif /* HAVE__BUILTIN_CLZ */
7171
}
7272

7373
/*

src/include/utils/jsonapi.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ typedef enum JsonToIndex
145145
jtiAll = jtiKey | jtiString | jtiNumeric | jtiBool
146146
} JsonToIndex;
147147

148-
/* an action that will be applied to each value in iterate_json(b)_vaues functions */
148+
/* an action that will be applied to each value in iterate_json(b)_values functions */
149149
typedef void (*JsonIterateStringValuesAction) (void *state, char *elem_value, int elem_len);
150150

151151
/* an action that will be applied to each value in transform_json(b)_values functions */

src/include/utils/sharedtuplestore.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*-------------------------------------------------------------------------
22
*
33
* sharedtuplestore.h
4-
* Simple mechinism for sharing tuples between backends.
4+
* Simple mechanism for sharing tuples between backends.
55
*
66
* Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
77
* Portions Copyright (c) 1994, Regents of the University of California

src/pl/plperl/plperl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@
8484
*/
8585
#ifdef PG_NEED_PERL_XSUB_H
8686
/*
87-
* On Windows, port_win32.h defines macros for a lot of these same functions.
87+
* On Windows, win32_port.h defines macros for a lot of these same functions.
8888
* To avoid compiler warnings when XSUB.h redefines them, #undef our versions.
8989
*/
9090
#ifdef WIN32

0 commit comments

Comments
 (0)