@@ -54,24 +54,9 @@ void ArrayString::init_from_mem(MemRef mem) noexcept
5454 else {
5555 auto arr = new (&m_storage) Array (m_alloc);
5656 arr->init_from_mem (mem);
57- // The context flag is used to indicate interned strings vs old enum strings
58- // (in conjunction with has_refs() == false)
59- if (arr->get_context_flag_from_header (arr->get_header ())) {
60- // init for new interned strings (replacing old enum strings)
61- m_type = Type::interned_strings;
62- // consider if we want this invariant: REALM_ASSERT_DEBUG(m_string_interner);
63- }
64- else {
65- // init for old enum strings
66- m_string_enum_values = std::make_unique<ArrayString>(m_alloc);
67- ArrayParent* p;
68- REALM_ASSERT (m_spec != nullptr );
69- REALM_ASSERT (m_col_ndx != realm::npos);
70- ref_type r = m_spec->get_enumkeys_ref (m_col_ndx, p);
71- m_string_enum_values->init_from_ref (r);
72- m_string_enum_values->set_parent (p, m_col_ndx);
73- m_type = Type::enum_strings;
74- }
57+ // init for new interned strings
58+ m_type = Type::interned_strings;
59+ // consider if we want this invariant: REALM_ASSERT_DEBUG(m_string_interner);
7560 }
7661 }
7762 else {
@@ -122,7 +107,6 @@ size_t ArrayString::size() const
122107 return static_cast <ArraySmallBlobs*>(m_arr)->size ();
123108 case Type::big_strings:
124109 return static_cast <ArrayBigBlobs*>(m_arr)->size ();
125- case Type::enum_strings:
126110 case Type::interned_strings:
127111 return static_cast <Array*>(m_arr)->size ();
128112 }
@@ -141,7 +125,6 @@ void ArrayString::add(StringData value)
141125 case Type::big_strings:
142126 static_cast <ArrayBigBlobs*>(m_arr)->add_string (value);
143127 break ;
144- case Type::enum_strings:
145128 case Type::interned_strings: {
146129 auto a = static_cast <Array*>(m_arr);
147130 size_t ndx = a->size ();
@@ -169,16 +152,6 @@ void ArrayString::set(size_t ndx, StringData value)
169152 static_cast <Array*>(m_arr)->set (ndx, id);
170153 break ;
171154 }
172- case Type::enum_strings: {
173- size_t sz = m_string_enum_values->size ();
174- size_t res = m_string_enum_values->find_first (value, 0 , sz);
175- if (res == realm::not_found) {
176- m_string_enum_values->add (value);
177- res = sz;
178- }
179- static_cast <Array*>(m_arr)->set (ndx, res);
180- break ;
181- }
182155 }
183156}
184157
@@ -194,11 +167,6 @@ void ArrayString::insert(size_t ndx, StringData value)
194167 case Type::big_strings:
195168 static_cast <ArrayBigBlobs*>(m_arr)->insert_string (ndx, value);
196169 break ;
197- case Type::enum_strings: {
198- static_cast <Array*>(m_arr)->insert (ndx, 0 );
199- set (ndx, value);
200- break ;
201- }
202170 case Type::interned_strings: {
203171 static_cast <Array*>(m_arr)->insert (ndx, 0 );
204172 set (ndx, value);
@@ -216,31 +184,6 @@ StringData ArrayString::get(size_t ndx) const
216184 return static_cast <ArraySmallBlobs*>(m_arr)->get_string (ndx);
217185 case Type::big_strings:
218186 return static_cast <ArrayBigBlobs*>(m_arr)->get_string (ndx);
219- case Type::enum_strings: {
220- size_t index = size_t (static_cast <Array*>(m_arr)->get (ndx));
221- return m_string_enum_values->get (index);
222- }
223- case Type::interned_strings: {
224- size_t id = size_t (static_cast <Array*>(m_arr)->get (ndx));
225- return m_string_interner->get (id);
226- }
227- }
228- return {};
229- }
230-
231- StringData ArrayString::get_legacy (size_t ndx) const
232- {
233- switch (m_type) {
234- case Type::small_strings:
235- return static_cast <ArrayStringShort*>(m_arr)->get (ndx);
236- case Type::medium_strings:
237- return static_cast <ArraySmallBlobs*>(m_arr)->get_string_legacy (ndx);
238- case Type::big_strings:
239- return static_cast <ArrayBigBlobs*>(m_arr)->get_string (ndx);
240- case Type::enum_strings: {
241- size_t index = size_t (static_cast <Array*>(m_arr)->get (ndx));
242- return m_string_enum_values->get (index);
243- }
244187 case Type::interned_strings: {
245188 size_t id = size_t (static_cast <Array*>(m_arr)->get (ndx));
246189 return m_string_interner->get (id);
@@ -263,10 +206,6 @@ bool ArrayString::is_null(size_t ndx) const
263206 return static_cast <ArraySmallBlobs*>(m_arr)->is_null (ndx);
264207 case Type::big_strings:
265208 return static_cast <ArrayBigBlobs*>(m_arr)->is_null (ndx);
266- case Type::enum_strings: {
267- size_t id = size_t (static_cast <Array*>(m_arr)->get (ndx));
268- return m_string_enum_values->is_null (id);
269- }
270209 case Type::interned_strings: {
271210 size_t id = size_t (static_cast <Array*>(m_arr)->get (ndx));
272211 return id == 0 ;
@@ -288,7 +227,6 @@ void ArrayString::erase(size_t ndx)
288227 static_cast <ArrayBigBlobs*>(m_arr)->erase (ndx);
289228 break ;
290229 case Type::interned_strings:
291- case Type::enum_strings:
292230 static_cast <Array*>(m_arr)->erase (ndx);
293231 break ;
294232 }
@@ -311,10 +249,6 @@ void ArrayString::move(ArrayString& dst, size_t ndx)
311249 case Type::big_strings:
312250 static_cast <ArrayBigBlobs*>(m_arr)->truncate (ndx);
313251 break ;
314- case Type::enum_strings:
315- // this operation will never be called for enumerated columns
316- REALM_UNREACHABLE ();
317- break ;
318252 case Type::interned_strings:
319253 m_arr->truncate (ndx);
320254 break ;
@@ -333,7 +267,6 @@ void ArrayString::clear()
333267 case Type::big_strings:
334268 static_cast <ArrayBigBlobs*>(m_arr)->clear ();
335269 break ;
336- case Type::enum_strings:
337270 case Type::interned_strings:
338271 static_cast <Array*>(m_arr)->clear ();
339272 break ;
@@ -355,14 +288,6 @@ size_t ArrayString::find_first(StringData value, size_t begin, size_t end) const
355288 return static_cast <ArrayBigBlobs*>(m_arr)->find_first (as_binary, true , begin, end);
356289 break ;
357290 }
358- case Type::enum_strings: {
359- size_t sz = m_string_enum_values->size ();
360- size_t res = m_string_enum_values->find_first (value, 0 , sz);
361- if (res != realm::not_found) {
362- return static_cast <Array*>(m_arr)->find_first (res, begin, end);
363- }
364- break ;
365- }
366291 case Type::interned_strings: {
367292 // we need a way to avoid this lookup for each leaf array. The lookup must appear
368293 // higher up the call stack and passed down.
@@ -420,8 +345,6 @@ size_t ArrayString::lower_bound(StringData value)
420345 return lower_bound_string (static_cast <ArraySmallBlobs*>(m_arr), value);
421346 case Type::big_strings:
422347 return lower_bound_string (static_cast <ArrayBigBlobs*>(m_arr), value);
423- case Type::enum_strings:
424- break ;
425348 case Type::interned_strings:
426349 REALM_UNREACHABLE ();
427350 break ;
@@ -434,9 +357,6 @@ ArrayString::Type ArrayString::upgrade_leaf(size_t value_size)
434357 if (m_type == Type::big_strings)
435358 return Type::big_strings;
436359
437- if (m_type == Type::enum_strings)
438- return Type::enum_strings;
439-
440360 if (m_type == Type::interned_strings)
441361 return Type::interned_strings;
442362
@@ -529,7 +449,6 @@ void ArrayString::verify() const
529449 case Type::big_strings:
530450 static_cast <ArrayBigBlobs*>(m_arr)->verify ();
531451 break ;
532- case Type::enum_strings:
533452 case Type::interned_strings:
534453 static_cast <Array*>(m_arr)->verify ();
535454 break ;
@@ -567,7 +486,6 @@ ref_type ArrayString::typed_write(ref_type ref, _impl::ArrayWriterBase& out, All
567486 leaf.destroy_deep (true );
568487 }
569488 else {
570- // whether it's the old enum strings or the new interned strings,
571489 // just write out the array using integer leaf compression
572490 ret_val = leaf.write (out, false , out.only_modified , out.compress );
573491 }
0 commit comments