@@ -56,16 +56,16 @@ template<> struct string_traits<pgvector::Vector> {
5656 }
5757
5858 size_t here = 0 ;
59- buf[ here++] = ' [ ' ;
59+ here += pqxx::into_buf (buf. subspan (here), " [ " , c) ;
6060
6161 for (size_t i = 0 ; i < values.size (); i++) {
6262 if (i != 0 ) {
63- buf[ here++] = ' , ' ;
63+ here += pqxx::into_buf (buf. subspan (here), " , " , c) ;
6464 }
6565 here += pqxx::into_buf (buf.subspan (here), values[i], c);
6666 }
6767
68- buf[ here++] = ' ] ' ;
68+ here += pqxx::into_buf (buf. subspan (here), " ] " , c) ;
6969
7070 return {std::data (buf), here};
7171 }
@@ -76,11 +76,13 @@ template<> struct string_traits<pgvector::Vector> {
7676 // cannot throw an exception here on overflow
7777 // so throw in into_buf
7878
79- size_t size = 2 ; // [ and ]
79+ size_t size = 0 ;
80+ size += pqxx::size_buffer (" [" );
8081 for (const auto v : values) {
81- size += 1 ; // ,
82- size += string_traits< float > ::size_buffer (v);
82+ size += pqxx::size_buffer ( " , " );
83+ size += pqxx ::size_buffer (v);
8384 }
85+ size += pqxx::size_buffer (" ]" );
8486 return size;
8587 }
8688};
@@ -122,16 +124,16 @@ template<> struct string_traits<pgvector::HalfVector> {
122124 }
123125
124126 size_t here = 0 ;
125- buf[ here++] = ' [ ' ;
127+ here += pqxx::into_buf (buf. subspan (here), " [ " , c) ;
126128
127129 for (size_t i = 0 ; i < values.size (); i++) {
128130 if (i != 0 ) {
129- buf[ here++] = ' , ' ;
131+ here += pqxx::into_buf (buf. subspan (here), " , " , c) ;
130132 }
131133 here += pqxx::into_buf (buf.subspan (here), static_cast <float >(values[i]), c);
132134 }
133135
134- buf[ here++] = ' ] ' ;
136+ here += pqxx::into_buf (buf. subspan (here), " ] " , c) ;
135137
136138 return {std::data (buf), here};
137139 }
@@ -142,11 +144,13 @@ template<> struct string_traits<pgvector::HalfVector> {
142144 // cannot throw an exception here on overflow
143145 // so throw in into_buf
144146
145- size_t size = 2 ; // [ and ]
147+ size_t size = 0 ;
148+ size += pqxx::size_buffer (" [" );
146149 for (const auto v : values) {
147- size += 1 ; // ,
148- size += string_traits< float > ::size_buffer (static_cast <float >(v));
150+ size += pqxx::size_buffer ( " , " );
151+ size += pqxx ::size_buffer (static_cast <float >(v));
149152 }
153+ size += pqxx::size_buffer (" ]" );
150154 return size;
151155 }
152156};
@@ -221,19 +225,18 @@ template<> struct string_traits<pgvector::SparseVector> {
221225 }
222226
223227 size_t here = 0 ;
224- buf[ here++] = ' { ' ;
228+ here += pqxx::into_buf (buf. subspan (here), " { " , c) ;
225229
226230 for (size_t i = 0 ; i < nnz; i++) {
227231 if (i != 0 ) {
228- buf[ here++] = ' , ' ;
232+ here += pqxx::into_buf (buf. subspan (here), " , " , c) ;
229233 }
230234 here += pqxx::into_buf (buf.subspan (here), indices[i] + 1 , c);
231- buf[ here++] = ' : ' ;
235+ here += pqxx::into_buf (buf. subspan (here), " : " , c) ;
232236 here += pqxx::into_buf (buf.subspan (here), values[i], c);
233237 }
234238
235- buf[here++] = ' }' ;
236- buf[here++] = ' /' ;
239+ here += pqxx::into_buf (buf.subspan (here), " }/" , c);
237240 here += pqxx::into_buf (buf.subspan (here), dimensions, c);
238241
239242 return {std::data (buf), here};
@@ -248,13 +251,16 @@ template<> struct string_traits<pgvector::SparseVector> {
248251 // cannot throw an exception here on overflow
249252 // so throw in into_buf
250253
251- size_t size = 3 ; // {, }, and /
252- size += string_traits< int > ::size_buffer (dimensions );
254+ size_t size = 0 ;
255+ size += pqxx ::size_buffer (" { " );
253256 for (size_t i = 0 ; i < nnz; i++) {
254- size += 2 ; // : and ,
255- size += string_traits<int >::size_buffer (indices[i] + 1 );
256- size += string_traits<float >::size_buffer (values[i]);
257+ size += pqxx::size_buffer (" ," );
258+ size += pqxx::size_buffer (indices[i] + 1 );
259+ size += pqxx::size_buffer (" :" );
260+ size += pqxx::size_buffer (values[i]);
257261 }
262+ size += pqxx::size_buffer (" }/" );
263+ size += pqxx::size_buffer (dimensions);
258264 return size;
259265 }
260266};
0 commit comments