MCPcopy Create free account
hub / github.com/apache/arrow / SetField

Method SetField

cpp/src/arrow/flight/sql/odbc/odbc_impl/odbc_descriptor.cc:135–249  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

133}
134
135void ODBCDescriptor::SetField(SQLSMALLINT record_number, SQLSMALLINT field_identifier,
136 SQLPOINTER value, SQLINTEGER buffer_length) {
137 if (!is_writable_) {
138 throw DriverException("Cannot modify read-only descriptor", "HY016");
139 }
140
141 // Handle header fields before validating the record number.
142 switch (field_identifier) {
143 case SQL_DESC_ALLOC_TYPE:
144 case SQL_DESC_ARRAY_SIZE:
145 case SQL_DESC_ARRAY_STATUS_PTR:
146 case SQL_DESC_BIND_OFFSET_PTR:
147 case SQL_DESC_BIND_TYPE:
148 case SQL_DESC_ROWS_PROCESSED_PTR:
149 case SQL_DESC_COUNT:
150 SetHeaderField(field_identifier, value, buffer_length);
151 return;
152 default:
153 break;
154 }
155
156 if (record_number == 0) {
157 throw DriverException("Bookmarks are unsupported.", "07009");
158 }
159
160 if (static_cast<size_t>(record_number) > records_.size()) {
161 throw DriverException("Invalid descriptor index", "HY009");
162 }
163
164 SQLSMALLINT zero_based_record = record_number - 1;
165 DescriptorRecord& record = records_[zero_based_record];
166 switch (field_identifier) {
167 case SQL_DESC_AUTO_UNIQUE_VALUE:
168 case SQL_DESC_BASE_COLUMN_NAME:
169 case SQL_DESC_BASE_TABLE_NAME:
170 case SQL_DESC_CASE_SENSITIVE:
171 case SQL_DESC_CATALOG_NAME:
172 case SQL_DESC_DISPLAY_SIZE:
173 case SQL_DESC_FIXED_PREC_SCALE:
174 case SQL_DESC_LABEL:
175 case SQL_DESC_LITERAL_PREFIX:
176 case SQL_DESC_LITERAL_SUFFIX:
177 case SQL_DESC_LOCAL_TYPE_NAME:
178 case SQL_DESC_NULLABLE:
179 case SQL_DESC_NUM_PREC_RADIX:
180 case SQL_DESC_ROWVER:
181 case SQL_DESC_SCHEMA_NAME:
182 case SQL_DESC_SEARCHABLE:
183 case SQL_DESC_TABLE_NAME:
184 case SQL_DESC_TYPE_NAME:
185 case SQL_DESC_UNNAMED:
186 case SQL_DESC_UNSIGNED:
187 case SQL_DESC_UPDATABLE:
188 throw DriverException("Cannot modify read-only field.", "HY092");
189 case SQL_DESC_CONCISE_TYPE:
190 SetAttribute(value, record.concise_type);
191 record.is_bound = false;
192 has_bindings_changed_ = true;

Callers 2

MutateByKeyFunction · 0.45

Calls 5

DriverExceptionClass · 0.85
SetAttributeFunction · 0.85
SetPointerAttributeFunction · 0.85
SetAttributeUTF8Function · 0.85
sizeMethod · 0.45

Tested by 2

MutateByKeyFunction · 0.36