I seem unable to figure out where I made a mistake, though this should be simple.
I have two SQL calls that bring back 5 fields: SELECT company_profile_id , reference_id, reference_source FROM company_reference_id limit 1 ; +--------------------+--------------+------------------+ | company_profile_id | reference_id | reference_source | +--------------------+--------------+------------------+ | 2 | 331089191 | EIN | +--------------------+--------------+------------------+ SELECT company_profile_id, url FROM company_website limit 1 ; +--------------------+------------------+ | company_profile_id | url | +--------------------+------------------+ | 2 | mikeshawauto.com | +--------------------+------------------+ This brings back a total of 5 values. I need to have a document that has 5 values, though if values have the same field-name, then I want to consolidate them into one vector. There are 4 unique field names, so I expect to end up with 4 vectors, holding 5 values. Instead, I get this: ({:company_profile_id ["2"], :topic :company, :how-many-rows-and-fields-from-database 13, :url ["mikeshawauto.com"], :reference_id ["331089191"], :reference_source ["ein"]}) I expect: {:company_profile_id ["2" "2"] but I get: {:company_profile_id ["2"] The documents are combined in a map in an atom, with this function: (def documents (atom {})) (defn update-documents [denormalized-id field-name field-value how-many-rows-and-fields-from-database topic] {:pre [ (not (nil? denormalized-id)) (not (nil? field-name)) (vector? field-value) ]} (swap! documents (fn [old-documents] (slingshot/try+ (let [ document (get old-documents denormalized-id {}) old-field-value (get old-documents field-name []) new-field-value (into old-field-value field-value) document (assoc document field-name new-field-value) previous-how-many-rows-and-fields-from-database (get document :how-many-rows-and-fields-from-database 0) new-how-many-rows-and-fields-from-database (+ previous-how-many-rows-and-fields-from-database how-many-rows-and-fields-from-database) document (assoc document :topic topic) document (assoc document :how-many-rows-and-fields-from-database new-how-many-rows-and-fields-from-database) new-documents (assoc old-documents denormalized-id document) ] new-documents) (catch Object o (errors/log o) (slingshot/throw+ { :type ::update-documents :error o } )))))) Can I assume that this always gives me 2 values in a vector? old-field-value (get old-documents field-name []) new-field-value (into old-field-value field-value) document (assoc document field-name new-field-value) I'm going to guess that the bug is somewhere else in my code. But if anyone sees a flaw in this function, I'd be grateful if you could point it out to me. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.