Davida C

Davida C

BookBrowse Reviewer
+ Follow
BookBrowse Reviewer Davida is a BookBrowse Reviewer and has written reviews featured in The BookBrowse Review.

Davida is a published poet, amateur baker, average bowler and a chocolate gourmet (not an addict) who studied creative writing and journalism. She has been a professional resource development writer for the non-profit sector for the past 25 years, and has a passion for reading (despite her mild dyslexia) and writing book reviews, which she has been publishing online for over 15 years. She blogs at The Times of Israel and her personal blog drchazan.blogspot.com

BookBrowse Editorial Reviews (26)

BookBrowse Editorial Review
A Well-Behaved Woman: A Novel of the Vanderbilts
by Therese Anne Fowler
(10/31/2018)
I can't say that A Well-Behaved Woman is absolutely perfect, but it does come very close. Fowler's writing style is very open, honest and absorbing, so despite its slightly extended length, I became so immediately and fully involved in the story that I practically whizzed through the pages. However, I believe there were some areas (although they were few and far between) that could have been cut out, or cut down, that might have made the narrative more cohesive and consistent. I
BookBrowse Editorial Review
The Lost for Words Bookshop
by Stephanie Butland
(7/11/2018)
This is one of those novels that ticks a whole lot of boxes for me, especially the fact that it takes place in a bookshop. Seriously, what book reviewer worth their salt can resist a novel with that word in the title? Another one of those ticked boxes is the mystery behind who is sending Loveday all those books. I love a good mystery, especially if it's one that doesn't involve too much violence. Admittedly, author Stephanie Butland does include some of that here, particularly the way Loveday's
BookBrowse Editorial Review
Winter Sisters
by Robin Oliveira
(4/4/2018)
Oliveira's style of writing fits the era quite nicely, with a certain level of propriety that stops well short of being stodgy. Without being overly lyrical or poetic, she draws a picture of Albany with many well-placed hints and carefully drawn descriptions of various locations that complement the story and characters. Mind you, some of the characters here are far from respectable, and the voices that Oliveira gives them reflect their social status perfectly. In fact, there was one character th
BookBrowse Editorial Review
The Last Mrs. Parrish
by Liv Constantine
(11/1/2017)
Combine this structure [introducing the antagonist first] with a very straightforward, slightly edgy feel to Amber's voice and a more lyrical sound to Daphne's – perhaps the two sisters divvied up these characters between them – and you have everything you need in both literary style and character development. Add to all of that Amber's devious plot to steal away Daphne's husband (with some twists that I cannot mention, since that would be giving away major plot spoilers), and, here too, the aut
BookBrowse Editorial Review
Forest Dark: A Novel
by Nicole Krauss
(9/20/2017)
...the narrative here (with a few exceptions) is highly readable and understandable, and even lyrical and humorous at turns. Forest Dark is so forceful and gripping that I simply gobbled it up from start to finish. Of course, I am probably the perfect target audience for this novel: I am Jewish, know Israel intimately, and am not afraid of being challenged by what could be considered absurd or fantastic. But even for the wider reading public, this is a five-star read.
BookBrowse Editorial Review
The Velveteen Daughter
by Laurel Davis Huber
(7/12/2017)
[T]his could easily have [been] a very sad or even depressing novel – it did feel somewhat morose to me, and I could have used a touch more of the lighter passages to dispel that – but Huber still instills it with quite a bit of hope, thereby sidestepping a fully negative atmosphere. Her focus on art, and real artists like Picasso, instill the story with interesting historical context as well. Even so, a lack of enough emotional variety, combined with some passages that I feel could
BookBrowse Editorial Review
Beartown
by Fredrik Backman
(6/21/2017)
I have read all of Fredrick Backman's books, and with each and every one I am pleasingly surprised at just how consistently wonderful a writer he is. He takes a subject I have no interest in, and turns it into a story that grips me from the first page. This time, his story centers on the game of hockey, a sport that I not only don't care for, but also sometimes find appalling. Yet when Backman starts describing how his characters play the game, including the violence that comes with it, we under
BookBrowse Editorial Review
Feast of Sorrow: A Novel of Ancient Rome
by Crystal King
(5/17/2017)
If this debut work is a taste of what King can serve up, I am hungrily looking forward to the feasts she'll cook up with next.
BookBrowse Editorial Review
Eveningland: Stories
by Michael Knight
(4/19/2017)
The first thing you notice about Michael Knight's Alabama-based Eveningland is his lovingly gentle writing style that is lyrical without being flowery. Knight imbues the stories within this collection with an attention to landscape and atmosphere that lend them a level of affection, thereby implying his personal relationship with their location. However, I was also struck by how he never allows place to overshadow the emotional connection to his characters. In fact, for the most part, the
BookBrowse Editorial Review
Girl in Disguise
by Greer Macallister
(3/8/2017)
...[T]his is precisely the type of novel to read if you want to get your pulse racing. However, that isn’t the only reason to read this book, because it also reminds us that America has a rich history filled with remarkable women. While some of these women worked for the greater good as champions of many worthy causes, others were outstanding by virtue of their struggle to succeed as individuals and professionals, on their own merits in a man's world. What a pleasure to learn about one of these
BookBrowse Editorial Review
Moonglow
by Michael Chabon
(1/18/2017)
Yes, Chabon does have quite a bit of ground to cover – but remember, he's practically telling his grandfather's whole life story. How he achieves this with such clarity and precision is what makes it so enjoyable. To be more specific, he takes a snippet from this grandfather's account in each chapter, and then segues into a fictionalized retelling of that event. In this way, Chabon blurs the lines between reality and imagination, making the inventions all the more real and the truths all the mor
BookBrowse Editorial Review
To Capture What We Cannot Keep
(1/4/2017)
The extra bonus is how gently Colin writes her prose, which I found to be sophisticated without being bombastic. Poetic interludes, describing the scenery and settings, work well without sounding clichéd. Colin's use of language also fits with the era she writes about, and helps contribute to the overall atmosphere of the book.
BookBrowse Editorial Review
November Storm: Iowa Short Fiction Award
by Robert Oldshue
(11/2/2016)
However, more important than content and theme, is Oldshue's ability to master the short story form, which can be difficult to accomplish. On the one hand, Oldshue's style seems to ramble along, going off on what seem like tangents and getting overly involved in back stories. However, even with these seeming digressions, he beautifully succeeds in bringing the stories back together to get to his main point. Mind you, his final lines often feel a tad on the mysterious side but, with just a moment
BookBrowse Editorial Review
Ninety-Nine Stories of God
by Joy Williams
(8/24/2016)
I can honestly say that Ninety-Nine Stories of God feels non-denominational overall, but I can imagine there will be people who might see some of the vignettes as anti-religion or even anti-Christian. But as I said, I felt like this book is more like a compilation of fairy tale-like stories, written for today's fast-moving information and digital age. One way or another, there is quite a lot here that will appeal to both the spiritual and the secular public, no matter their religious back
BookBrowse Editorial Review
The Fox Was Ever the Hunter
by Herta Muller
(6/22/2016)
Admittedly, this is not going to be a book that everyone is going to love, and, in fact, I'm sure that many will hate it. However, I hope that those who do read it to the end will realize, as I did, that The Fox Was Ever the Hunter is much more than a bunch of poetic vignettes strung together against the background of communist Romania. There are subtleties here that can only be discovered after finishing it, and they certainly make it worth your while.
BookBrowse Editorial Review
A Place Called Winter
by Patrick Gale
(5/18/2016)
How much of this story is true to the real one of Harry Cane's life is irrelevant. Certainly, the amount of information Gale received from his grandmother must have had many gaps where he had to fill in and add details. Gale clearly overcame all of these obstacles, and in doing so, gave us something marvelously well rounded, fascinating throughout, and obviously, a loving tribute to a man he never had the chance to know. This makes me think that Harry would have been very pleased to see his very
BookBrowse Editorial Review
The Photographer's Wife
by Suzanne Joinson
(3/2/2016)
The first thing you'll notice about this novel is it's absolutely stunning prose...What we end up with is a type of collage of images that dress the plot with different types of textures and fabrics; rich language puts things in light or shadow as the situations warrant them. This is the most compelling aspect of this novel, and probably the main reason I couldn't stop reading it.
BookBrowse Editorial Review
My Name Is Lucy Barton: Amgash Series #1
by Elizabeth Strout
(1/6/2016)
Strout's genius is to pack so much rich emotion into such a short work, and to do so with simple, uncomplicated language – something that, in my opinion, few authors are able to achieve. It is very possible, of course, that her expertise in writing short stories contributes heavily to this (as demonstrated by her Pulitzer Prize winning collection Olive Kittredge).
BookBrowse Editorial Review
The Heart Goes Last: A Novel
by Margaret Atwood
(10/7/2015)
Although the plot elements in The Heart Goes Last sound mostly damning, Atwood adds no small amount of good things about the Consilience project: it subscribes to a green living model with self-sustaining industries and economic stability. And while most dystopian novels are as dark as the communities they describe, thankfully, Atwood avoids this trap by using humor. The technique allows her to be even more biting in her attitudes regarding greed, while simultaneously keeping her protagon
BookBrowse Editorial Review
Two Years Eight Months and Twenty-Eight Nights
by Salman Rushdie
(9/16/2015)
Rushdie's writing style is a combination of lusciously meandering prose that is achingly perceptive and a word frenzy that is unerringly infectious. This is why I have a feeling that the word "masterpiece" is going to be associated with this book, and not ironically or with any hyperbole.
BookBrowse Editorial Review
The Beautiful Bureaucrat
by Helen Phillips
(9/2/2015)
Overall, my impression was that Phillips wants us to begin reading The Beautiful Bureaucrat with a glimmer of hope, but she then moves us through various levels of quiet desperation with splashes of optimism, all as the action becomes increasingly unsettling. To do this, Phillips builds the stress and increases the pace of the narrative throughout this short novel, until it reaches a perfectly formed climax at the end of the book. This makes for a very exciting, page-turning read, with a
BookBrowse Editorial Review
The Sunken Cathedral
by Kate Walbert
(6/17/2015)
Rather than swamp this review with further adjectives, I will simply say that I haven't read a book this beautifully written since Ondaatje's The English Patient. While I'm sure this book won't appeal to everyone, I'm certain that lovers of contemporary, literary fiction will enjoy this novel immensely, and I cannot recommend it more highly.
BookBrowse Editorial Review
A Reunion of Ghosts
by Judith Claire Mitchell
(4/1/2015)
One of Mitchell's conceits is to counterbalance the depressing aspects of her situations with just enough humor to avoid sounding maudlin. One of the most cleverly told stories I've come across in a very long time, despite the fact that some of the eras and subjects discussed are practically dramatic clichés.
BookBrowse Editorial Review
A Spool of Blue Thread
by Anne Tyler
(2/18/2015)
Simply stated, Anne Tyler's 20th novel, A Spool of Blue Thread, is a beautifully constructed story, lovingly told with truly realistic and interesting characters.
BookBrowse Editorial Review
The Brotherhood of Book Hunters
by Raphaël Jerusalmy
(1/21/2015)
In short, The Brotherhood of Book Hunters is one wild and ancient ride - emotionally, physically (for the characters) and literarily. I did find the characters hard to keep track of at times, and the many twists and schemes did get somewhat confusing. Aside from that, this is a beautifully written novel and a truly compelling read. I'd certainly recommend it to anyone who likes historical fiction with a good quest (religious or otherwise) and doesn't mind some poetry thrown in for good me
BookBrowse Editorial Review
The Betrayers
by David Bezmozgis
(11/5/2014)
Bezmozgis instills, within the story, swift strokes of suggestion in the perfect embodiment of "show, don't tell." With his clear, straightforward style, Kotler becomes an intellectual with a sharp mind and tongue to match; someone who knows his strengths and weaknesses, but is still curious and daring enough to constantly test boundaries. Matching this against Tankilevich's self-righteousness, anger and long-standing guilt, Bezmozgis brings us to a powerfully dramatic climax with prose that bur

Reviews (14)

Hamnet
by Maggie O'Farrell
Net or Let (8/14/2020)
For those who don’t know, Hamnet was the name of William Shakespeare’s only son, who died at the age of 11. In O’Farrell’s latest novel, she takes up the scholarly presumption that there was a direct connection between his son’s death and his play “Hamlet.” To do this, O’Farrell draws detailed portraits of two main people – Hamnet himself, and his mother Agnes (aka Anne) Hathaway. Together with this, O’Farrell also draws a simpler, yet no less meticulous, portrait of Hamnet’s father, almost as an aside to his relationship with these two main characters. Goodreads says that this is a “luminous portrait of a marriage, a shattering evocation of a family ravaged by grief and loss…”

I’ve read quite a few reviews of this book, many of which have picked up on things I was originally going to write about myself. For example, Shakespeare himself is never named in the book. In addition, there’s a whole passage which O’Farrell included here, which ended up being (far too) relevant to our present world pandemic, that being where she traces the minutia of how one wave of the plague reached Stratford. Reading that, and knowing that travel then was nowhere near as popular or widespread as it is now, no one would be surprised that this pandemic we are living through would be so devastating. Mind you, the few lines about how all the London playhouses were closed down as soon as the plague appeared made me think that at least Queen Elizabeth I and her Parliament knew how to handle such things much better than some countries (including the UK) are doing today!

Politics and current events aside, since other bloggers have exhausted all those talking points so nicely, I decided that for this review I’ll to concentrate on three less discussed topics. First, on O’Farrell’s writing style in this novel. Next, I’ll look at her character development. Finally, I will talk about how this book differs from her other novels. Now, as my regular readers know, I’ve read all of O’Farrell’s novels as well as her memoir, and so I believe I’m well equipped to approach this review from these particular angles.

O’Farrell’s writing style is what drew me to her books in the first place. What I find to be magical about her writing is how she’s able to use her language to build up an atmosphere. In this book in particular, O’Farrell has adapted a slightly more poetic quality to her writing, with highly descriptive passages, many of which felt pensive, dark, and a touch brooding. Yet, there was still an underlying level of lightness here, to keep this from feeling too gray. These descriptions are used to paint pictures of both the characters and the locations, as well as how the former moved through the latter. As someone who visualizes the action of the books as I read, this worked perfectly for me, and I could easily see everything and everyone that O’Farrell put down on each page. In fact, there were a couple of times when O’Farrell described the scent of something where I almost was able to imagine that same smell! If you ask me, that is artistry in writing at its very finest!

This leads directly to how O’Farrell developed her characters. What was most fascinating here, was that my ability to picture each character was accomplished with an absolute minimum of dialog. Usually, a character’s mettle is often revealed in what they say, in addition to what they do. However, O’Farrell accomplished this by concentrating more on getting into the minds of the characters than letting them speak for themselves. She showed us their gestures, their moods, their thoughts, as well as how their bodies moved within the spaces where she placed them. We saw them change and grow and develop, much like (pardon the cliché) watching a flower bloom. In the end, while Agnes ends up being the primary protagonist, each character portrayed here – no matter how minor – was believable, and flawlessly developed and formed.

How this book differs from her other novels is twofold. First, this one has a tiny touch of magical realism, where Agnes seems to be a bit of a psychic, which she seems to pass on to one of her daughters. This time, I wasn’t bothered by this at all, probably because back then people were very superstitious, and it fit in with the overall narrative and character development. Second, all of her previous books were either contemporary fiction, or had mixed contemporary and historical dual timelines. If I recall correctly even with the historical parts of O’Farrell other novels never went further back than early(ish) 20th century. This novel, however is not only fully and totally historical fiction, it is set far further back in time than any of her other books. And not just by one century, but reaching back to the late 16th century and very early 17th century, no less. Now, I’m a huge lover of historical fiction, especially biographical historical fiction, so this was absolutely no problem for me whatsoever, but this certainly was a departure for O’Farrell. I can only hope that her faithful fans won’t find this too startling of a departure, and can still enjoy it as they have done with all her previous works.

Finally, the way O’Farrell concludes this novel, had me weeping like a baby! Now, it isn’t often that one reads biographical, historical fiction (where we already know who will live and who will die and even how and when), that something appears in a book that makes you surprisingly emotional, but this one does just that with the last page. Taking all these things into account, what we have here is… well… nothing short of a masterpiece. There is therefore no way I could give this less than a full five stars. I will be recommending this to anyone and everyone, even people who don’t like historical or biographical, or women’s fiction.
Code Name Hélène
by Ariel Lawhon
Resistance in Red Lipstick (5/7/2020)
Nancy Wake was an ex-pat Australian, working as a freelance journalist in France sending stories to the Hearst papers in the US, when she fell in love with the wealthy businessman, Henri Fiocca. That was in 1936, and Nancy had already witnessed the beginnings of the rise of Fascism, even reporting on the cruelty of Brownshirts and interviewing a strange, but up-and-coming German politician named Adolph Hitler. She understood then the threat to France and all of Europe. So, when the war began, her first instinct was to outfit an ambulance so when Henri, now her husband, was called up, she could also be useful to the war effort. Little did she know then that this would lead her to become (as Goodreads says) “one of the most respected and powerful figures within the French resistance, all the while doggedly working towards liberation, and back to her beloved Henri.”

No, before I read this book, I had no idea who Nancy Wake was, or anything about the woman behind the many aliases she had including The White Mouse, Madame André, and of course, Hélène. In fact, Lawhon begins her book with the line “I have gone by many names.” The fact that I wasn’t familiar with any of these names, despite her being one of the Gestapo’s most wanted spies, and the extraordinary number of awards heaped upon her after the war (literally across the globe), makes me ashamed, both for myself (as a lover of historical fiction, particularly biographical, women’s fiction from this era), and for the oversight of history not shouting her story out from the rooftops. Well, thank heavens for Ariel Lawhon, and for her writing her story so beautifully (or should I say, righting history). I will now take this opportunity to reiterate what Lawhon says as introduction to her author’s note at the end of the book: do NOT read those notes before you read the novel! PLEASE!

I’ll admit that I’m a huge fan of Lawhon’s work, and I’ve been one since reading her first novel in 2014. Although that might make it seem like I’m prejudiced, I can assure you that I’m not (and I hope that will be evident through this review). To prove this, I’ll start with the thing that didn’t sit 100 right with me, and that was the order of the last several chapters. See, my thinking was that after one of the climactic chapters, a couple of the ones that followed felt slightly like a letdown. In particular, the chapters that were flashbacks to earlier times, that gave background for action that took place later on. These slightly disrupted the flow of the ending of the book, and I’m not sure how I might have re-ordered them to make it feel smoother. That said, I wouldn’t have wanted Lawhon to cut any of them, because they were all important to the story (including at least one twist I hadn’t expected).

Other than that, I have to say is that through this book, I became totally and utterly enamored with Nancy Wake, by whatever name she used. My regular readers will know that last year I fell in love with the character Nina in Kate Quinn’s “The Huntress.” Well, sorry Nina, but it is already time for you to step aside – Nancy is my #1 favorite bad-ass woman now! Yes, I know that Nina was fictional and Nancy was a real person, but still… when it comes to pure grit, ingenuity, and audacity, there’s just no comparison. Furthermore, while Nina was crass in both language and looks, Nancy had an even fouler mouth on her. Plus, even when she went for days if not weeks without the ability to keep up her appearance, she always made sure that people would never be able to see what was behind the façade until she wanted them to, with her red lipstick always at the ready. In addition, the way Lawhon portrays Henri, well… SWOON! Again, my readers know I’m not into romance, but boy, this relationship was a true joy to watch develop, like watching a tiny rosebud turn into a full blown, gorgeous rose. In a word: Exquisite!

One of the reasons why I love Lawhon’s books so much is because they’re so vividly written, with just enough poetry underneath her forthright style. As I mentioned in my third #DiscussionSunday post, I recently realized that when I read, I can practically see the action take place in my head. However, if the writing is lacking and I can’t visualize things clearly, the books often get lower ratings from me. I’m pleased to say that this book was so beautifully crafted that I think someone should make this into a movie and ask ME to help make sure that what I saw in my imagination comes across the same on the screen. This was particularly true when Lawhon described scenes that took place in France while Nancy was leading the resistance. Hell, I could almost feel the blisters, aches and pains that Nancy suffered, which never once diminished her fortitude to succeed with her mission.

Seriously… do I need to say more? Would any of my readers be surprised at my recommending this book wholeheartedly, with a full five out of five stars? I’m sure you won’t be (yes, I cried; yes, I laughed. Both when I wasn't expecting to cry or laugh). Mind you, I must admit that although this came extremely (almost dangerously) close, it didn’t actually beat out Lawhon’s “Flight of Dreams” for my favorite of all her novels so far. This is ONLY because of my little niggle regarding the order of those final chapters, which wasn’t enough of a problem for me to reduce it even by a quarter of a star. Read this book. You won’t regret it… but WARNING: If you don’t like to read books with dialogue that includes tons of swearing (even though the real Nancy reportedly could make a furious, drunken sailor blush, and Lawhon toned it down for this novel), then this book might not be for you!
Lady Clementine
by Marie Benedict
More Daring than Darling (1/3/2020)
Benedict uses her straightforward and uncompromising literary style to focus this novel mostly on Clementine’s life starting from when she met Winston in 1904, through 1945. That means the book encompasses both world wars. Think about it… to put 41 (very eventful) years into just under 340 pages is no small accomplishment. To achieve this, Benedict did some very careful picking and choosing, so that the events that got into the book were almost only those where Clementine’s involvement was either obvious, or should have been much more discernible. For example, Benedict describes the open secret that Clementine helped Winston write most of his speeches and had a large hand in editing his writings.

Benedict also shows Clementine meeting with international heads of state, even in situations where she was the only spouse in the room. There’s also the relationship with Eleanor Roosevelt, the famously heavy-handed and highly influential wife of Franklin D. Roosevelt, who was the US President during almost all of WWII. The parallels Benedict drew between these two women was probably my favorite part of this novel, since they were truly the proverbial “two peas in a pod”! Think about it – FDR had his debilitating Polio (albeit before he became president), and Winston almost died of pneumonia while he was PM during WWII. These wives nursed their husbands, knowing full well that their husbands’ political careers would take front and center the moment they were once again physically able.

I think what impressed me the most about this novel was how Benedict succeeded in making all of it – even the places where Clementine wasn’t playing an instrumental part – truly Clementine’s story. That doesn’t mean that she ignored Winston here, but rather that we saw it all through Clementine’s eyes, through her emotions, through her feelings, and through her own actions (or inaction, as sometimes the case might have been).

Benedict also suggests that Clementine was very self-aware regarding her own inadequacies and ineffectiveness, and in fact more than implies that Clementine suffered from no small amount of emotional distress that might have had an impact on her mental health. I don’t know if this is factually correct, since my copy of the ARC didn’t have any author’s notes included, but it certainly sounded plausible to me.

What I’m saying here is that essentially, this is precisely the type of novel that I look for in women’s, biographical, historical fiction. Benedict’s precise, practically surgical selection of events shows Clementine as not just a strong supporter of her husband, but a tough, intelligent, leader of a woman in her own right, and one who doesn’t hesitate to take action, even when its controversial, or when failure is lurking in the shadows. Clementine isn’t simply a bystander or witness, because she’s practically on the front lines of every battle, even when she’s behind the scenes pulling her own strings. It seems very strange for me to say this of the first book of 2020, but I must give this novel a full five out of five stars. Benedict has outdone herself here, and I cannot recommend this book warmly enough.
The Last List of Miss Judith Kratt: A Novel
by Andrea Bobotis
A Family Inventory (7/9/2019)
First and foremost, oh… my… goodness! Bobotis is an absolutely amazing writer! The language here is so stunning, that I’m having a hard time describing it to you all. Bobotis’ voice is very unique, which is something that is probably the hardest thing to achieve for any writer. That this is a debut novel makes this all the more impressive (but I believe she’s been honing her craft with short stories and the like, with some very good success).

What fascinated me the most is how Bobotis’ prose seems to just flow, so very naturally and smoothly, while at the same time she employs metaphors and assigns attributes to things that we’d never think of under normal circumstances. Emotions get things like colors and textures, while inanimate objects take on anthropomorphic elements, bringing them to life.

However, this isn’t poetry, although some phrases are unarguably poetic, since these come as little sparkles, splashed into the most ordinary of sentences. If this doesn’t make sense, I’m really sorry, but you’ve got to believe me that Bobotis’ talent is something very special indeed, and you’ll just have to read it yourself to get my meaning.

Of course, all this could be just well and good on its own, but Bobotis combines all this with a family saga and the search for the truth in these peoples’ lives that is adroitly plotted and nimbly paced to achieve maximum enticement to read on and on. We get every element needed such as sex (although it is implied more than described, thank you very much), intrigue, conspiracy, deception, cruelty, abuse, and even a bit of extortion and blackmail, not to mention murder and adultery. But there’s also compassion, generosity, and kindness and a group of people who refuse to adhere to the norms of racism that were so prevalent at the time (which unfortunately, continue to some extent even today). As complex as this may sound, Bobotis serves us this menu one course at a time, through Judith’s eyes, while remaining true to her theme of Judith’s inventory by occasionally giving us a list of the items in the Kratt home that Judith notes. What I found even more clever was that the list changes and increases as it includes things that she features in each of the chapters, all of which go towards slowly unveiling all of the Kratt family secrets. Mind you, we can figure out a few of these mysteries before some of the characters, but that doesn’t lessen any of the suspense here.

Finally, Bobotis also knows just how to develop her characters so that we react with just the right amounts of empathy and/or disgust at just the right intervals. Judith’s craggy demeanor and Olva’s overly submissive overtures evolve throughout the story in such subtle and realistic ways that we hardly notice the undertones of a coming of age subplot, but it’s there all the same. Plus, all the quirky, and sometimes unsavory minor characters all play their parts to push the story along, all the way through to the gentle ending, that leaves just enough to the imagination to be satisfying while not wanting to let any of them go. That doesn’t mean I’m expecting a sequel, but I can promise you that I’d be first in line to grab a copy if Bobotis decides to write one.

I think I’ve been effusive enough about this novel, so I’ll stop here. (But just to be certain… I wanted to rush through it, but I also wanted to savor each and every word, it was just that wonderful.) Of course, I’m positive that my readers can already figure out that I’m giving this a resounding full five out of five stars. This is very unusual for me, and it reminds me how I gave equally as much high praise and marks to Fredrik Backman’s “A Man Called Ove,” which I also had the privilege to read prior to its publication. I knew then that he’d become a sensation, and if Bobotis can sustain this level of creativity in her next works, I believe she’s going to be on a very similar path towards success (and I hope to come along for the ride)! Brava, Andrea, BRAVA!
Warlight
by Michael Ondaatje
The consequences of peace (6/22/2018)
"It is 1945, and London is still reeling from the Blitz and years of war. 14-year-old Nathaniel and his sister, Rachel, are apparently abandoned by their parents, left in the care of an enigmatic figure named The Moth. They suspect he might be a criminal, and both grow more convinced and less concerned as they get to know his eccentric crew of friends: men and women with a shared history, all of whom seem determined now to protect, and educate (in rather unusual ways) Rachel and Nathaniel. But are they really what and who they claim to be? A dozen years later, Nathaniel begins to uncover all he didn’t know or understand in that time, and it is this journey – through reality, recollection, and imagination – that is told in this magnificent novel.”

Ondaatje is my favorite author, so a new novel by him is always something I’m on the lookout for. What makes Ondaatje my favorite isn’t always the stories he tells, but how he tells them. In fact, sometimes Ondaatje can be confusing in his story telling, but even when things don’t make perfect sense, his prose is always so exquisite that it doesn’t matter. Goodreads also said about this book “In a narrative as mysterious as memory itself – at once both shadowed and luminous – Warlight is a vivid, thrilling novel of violence and love, intrigue and desire.” Yeah… ‘luminous’ is a very good word for what Ondaatje gives us, and he does succeed in giving it to us every time.

Rather than continue to be effusive about how Ondaatje writes (and you know I could go on endlessly), I think I should concentrate on the story, which is told mostly from the narrator’s point of view, that being Nathaniel. I should note that in this book, Ondaatje moves between first and third person, where you get the feeling that Nathaniel is also narrating the third person sections, while at the same time, taking an omnipresent viewpoint. I know that doesn’t sound like it makes any sense, but if you think of it as the ‘imagination’ part noted above from the Goodreads blurb, I think you’ll understand what I mean here. My thinking is that Ondaatje needed the first-person parts to draw the reader in, and make them sympathetic to Nathaniel, but that viewpoint doesn’t allow for the wider picture of things that happened beyond Nathaniel’s own experiences; to include those events, he allows Nathaniel to imagine them from a distance, in both time and through piecing together clues he finds.

What this does is give us a very layered story, wherein Ondaatje starts with Nathaniel as a young teenager, and builds on this time in a mostly chronological order. Ondaatje then moves to Nathaniel as a young man, and this is where he introduces the third person/imagination sections of the story. These passages help Nathaniel fill in the blanks of his own life, but more importantly, he also learns more about his mother’s life, and what really happened to her when she disappeared from his life. All the other characters seem to dance on the sidelines of Nathaniel’s life, until their presence is necessary to add something to the story, and only then they can take center stage for a time. I found this fascinating in how it seemed to say that although you might sometimes feel that certain people have no significant impact on your life, in fact, there are no real minor characters, you just don’t always understand their importance at the time.
However, I don’t think that was the main point of this book, although for me it was a substantial part. If I had to pinpoint what I think Ondaatje is saying here, I’d say that we must look at the title of the book and attempt to understand its significance. For those who read this book the word “warlight” only appears near the end of the novel when Ondaatje talks about how the British helped barges find their way on the Thames when they transported munitions during the war. What this says to me is that this story is more about Nathanial finding his way, than who or what was helping or hindering him along his path. If that means it is a “coming of age” story, then so be it, and I can’t think of one more beautifully written than this. On the other hand, there was one phrase that Ondaatje used which I think may be even more significant in understanding what this book is about, and that’s the one I used as the title of this review – the consequences of peace. That simple combination of words is so powerful and evocative for me, that I’m sure I’ll be thinking about it for a very long time, if only because it is an impeccable example of how amazing a writer Ondaatje proves to be, time and again.

That only leaves the question if this book has overtaken “The English Patient” and “The Cat’s Table” as my favorite of Ondaatje’s works, and I must be honest and say no – those two are still my favorites. However, if until now I ranked “Anil’s Ghost” as just below those two, I believe that this book has edged that novel out, but only by a just a whisper.
Lillian Boxfish Takes a Walk
by Kathleen Rooney
A Life in Steps (4/8/2018)
This book made it to my "top 5 of 2017" list, and is certainly my favorite type of fiction (although usually this happens more with historical fiction, and less with contemporary fiction - of which this is essentially both), shining a light on real people about whom we know little to nothing about, and Rooney's spotlight was as startlingly bright as it was flattering. To begin with, Rooney's writing style is so sophisticated and charming that you can't help but believe that Lillian was not only a talented writer and poet, but that she must have been even more beguiling than Rooney portrays her.

Rooney's use of language is also endearingly witty, and I'm trying to figure out how many words in the thesaurus I'll need to use to describe this book, because it's already starting to run out of appropriate adjectives.

As you can see, I'm in love with this book, and that makes it terribly difficult to review without becoming so effusive that my readers get sick of me. So rather than go on and on with piles of compliments that get not only whipped cream but several cherries on top, I'm simply going to say that I cannot recommend this book highly enough, and it deserves more than just a full five stars out of five! (Note to self: where have you been all my reading life, Kathleen Rooney?)
The Music Shop: A Novel
by Rachel Joyce
Hallelujah for Vinyl (3/1/2018)
Rachel Joyce's newest novel begins with this simple line, "There once was a music shop." No, this isn't a fairy tale; instead, what follows is a complex journey of two people on the backdrop of a soundtrack that’s equally as eclectic as they are. It’s the 1980s and Frank believes that music can heal people, and he has a knack of begin able to find just the right piece for whatever that person needs. However, Frank also believes in vinyl and refuses to sell anything but them in his shop, despite the music industry's growing adoration of CDs. However, with his accident-prone helper Kit, and a slew of oddball neighbors with them on Unity Street, it looks like this fading neighborhood is the next up for developers and their dreams of gentrification. Into all this walks Ilse, who immediately faints and thereby changes Frank's life as well as that of everyone else.

If you've ever read any Joyce (Harold Fry and Queenie Hennessey), you'll already know that despite the fact that she uses one of the oldest and mundane basic plots on earth (boy meets girl, etc.), her creative genius lies in her ability to grab her readers with the most quirky and loveable characters we could ever imagine. Although Joyce's second novel, Perfect, strayed from this formula, this newest work does not, and I'm not complaining even one tiny bit. In fact, what Joyce achieved with both Harold and Queenie in two separate novels, she's surpassed with Frank and Ilse in this one book.

One can easily compare and contrast these two sets of relationships. Although Ilse, unlike Queenie, isn't on her deathbed, she does have a medical problem but thankfully, it isn't fatal. Unlike Harold, Frank doesn't walk the length of Britain to see Ilse. However, Frank does have a type of journey, which an internal one. At the same time, Frank attempts to help others onto better paths through his deep insights into what music will take them there. Remember too that Harold and Queenie both told their stories of their relationship in retrospect. In this book, Joyce tells Frank and Ilse's story as it happens, beginning their meeting in the late 80s and ending in 2008, with a 20-year gap in the narrative.

Furthermore, in both Harold and Queenie, the primary focus was on those two protagonists, with all the minor characters almost exclusively in the background (practically as footnotes). Ilse and Frank have quite a number of predominant supporting characters (along with a mostly unseen real estate development company) playing significant roles in both helping and impeding their relationship. In fact, one of these characters is practically a third protagonist, but she only appears in a few chapters of her own and as small reminders elsewhere, yet her impact on Frank, and through this also on Ilse, is enormous (sorry, no spoilers).

Aside from this, what all three of these books (as well as her other novel and her short stories) have in common is how Joyce succeeds with such grace and deceptive simplicity of prose to make us fall in love with such obviously flawed, tantalizingly unusual, yet amazingly ordinary people. Yes, I know this sounds like an oxymoron dream fest, but that's Joyce - she knows how to combine all these things to make characters that (excuse the cliché) practically jump off the page at her readers. Joyce also knows how to build a plot around these characters where they can work through various obstacles, which adds to these characters' development.

Here too, Joyce likes parallels, for example, Frank's insistence on only selling music on vinyl (that at the time many thought would eventually become obsolete) echoes the neighborhood "Unity Street" where he has his shop, where a property developer is trying to buy out all the residents. It was as if Joyce was trying to say that modernity may influence many, but some steadfast people will always survive with their principles intact.

As you can see, I thoroughly adored this novel, and of course, I will highly recommend it. Mind you, if you don't have a huge batch of tissues when you get to the last handful of pages, you're going to make a mess of your sleeves - BIG TIME! As I've said before "Hello, my name is Davida, and I'm a Rachel Joyce addict," and this book only increased this wonderfully delightful habit for me - so I can't give it less than a full five out of five stars!
(This review originally appeared on my website "The Chocolate Lady's Book Review Blog.")
Young Jane Young
by Gabrielle Zevin
The Choices We Make (8/24/2017)
The more I think about this book, the more I realize how ingeniously Zevin constructed it. First, each section has a different narrating character, telling one part of the story from their perspective. Like other books that use this mechanic, the sum of all these sections brings us the full story. What is different in this book is that each character tells their story in a very different way. For example, Ruby tells her story through her emails to her pen pal. Later, Jane tells her own story in a retrospective voice, which she frames as if it is one of those R. L. Stine "Goosebumps" create-your-own-adventure books. (They're the ones where at a certain part of the story the reader has to decide between one of two options on how to proceed, and with that choice moves to the particular relevant next page. The idea was that you could read them repeatedly, making different choices each time, and thereby get a different story each time.) The other sections are the usual types of narratives, but these two were exceptional in their distinctive construction. What Zevin achieves with all of this is to give each of her characters a very singular voice.

Much like with Zevin's previous novel (The Storied Life of A.J. Fikry), readers will find this book filled with heavy doses of humor, both light and wryly dry. What surprised me somewhat was how authentically Jewish these characters all were. I understand that her father is Jewish, and I'm sure she drew much from his female family members for these portraits. Even so, that's not always a terribly accurate research source, and yet I couldn't find anything that sounded even a little out of place here, and since inaccuracies regarding anything Jewish is a pet peeve of mine, Brava to Zevin for that. However, it isn't all fun and games particularly because the central event here is a sex scandal, the ramifications of which can be extremely serious. It seems that Zevin was thinking about a type of smaller-scale Monica Lewinsky situation when she wrote this, and tried to imagine how difficult it would be to rebuild a life after having become so notorious. Deeper still, with this book Zevin is essentially exploring the ramifications of the choices we make, both good and bad. This is why the "Goosebumps" section of this book is so effective - because it allows us to look at this on a lighter plane, without diminishing the lesson in the process.

I'll end by saying that I felt that Zevin's conclusion of this book was very nearly masterful, but not quite. In general, I often prefer books that make readers think about them afterwards and with this book, Zevin doesn't give away too much regarding the future of these characters after the last page. However, in this case, though, I'm of two minds regarding the biggest question (of which I can't say more, as that would be a huge spoiler). On the one hand, I really wanted to know the answer, but on the other hand, I'm not sure that Zevin would have given me the outcome I would have preferred. More importantly, I can't really tell if including either result might have ruined the book for me or not, although I'm positive she could have pulled off either conclusion. I admit that this frustrated me just enough to knock off half a star, so despite my overall enjoyment of this novel, I can only give it four and a half stars (which is still a very good rating, just half a star less than I gave Fikry).
See What I Have Done
by Sarah Schmidt
The clock on the mantle ticked ticked (6/16/2017)
Although a jury of her peers found Lizzie Borden not guilty of the murders of her father and stepmother, Andrew and Abby Borden, the court of public opinion found her guilty as charged. The mystery behind these brutal murders continues to this day, almost a full 125 years since it happened, while scholars continue to try to figure out the truth. Of course, a good historical mystery is exactly the type of fodder to feed any good that fiction writer's imagination. No wonder Schmidt takes this story on, and gives it an angle that makes the few facts available even more sinister than the legend or this memorable gruesome poem.

Lizzie Borden with an axe
gave her mother forty whacks;
when she saw what she had done
gave her father forty-one.

Think what you will, but the only thing in that little rhyme that is provably accurate is that Abby died before Andrew. Schmidt seemingly took the popular view of these events, and with it, built up a psychological thriller of a novel, looking at the events through the eyes of four characters - three real people and one fictional person. Lizzie is the primary narrator here, with her sister Emma and the maid Bridget filling out the last of the real individuals here. With them, Schmidt adds someone called Benjamin, a drifter hired by John Morse (the girl's biological mother's brother), ostensibly, to teach Andrew a lesson because of how poorly he treated his daughters. Schmidt allows each of these characters to tell their own story, in alternating chapters.

Before you dismiss this book as overly macabre and morbid, I will remind you that (as my regular readers will know), I don't usually read crime or adventure novels. However, this really isn't one of those; it's much more of a psychological study. To be precise, what Schmidt has done here is get into the heads of these people, and through their thoughts, we learn first about their states of mind, and with them, events surrounding the murders with some flashes back into their pasts. For example, in the parts focusing on Lizzie, every so often Schmidt adds the line "The clock on the mantle ticked ticked" (hence, the title of this review). With these repetitions of that one line, it slowly becomes an ominous and hypnotizing statement, with each recurrence. Doing this gives us the feeling that Lizzie's mental state is far from normal. Despite this, Schmidt also includes are flashes of clarity in Lizzie's mind, which makes us wonder if her condition (call it sanity, if you will) is increasingly deteriorating or just some kind of an act.

With Benjamin, the one fictional character, Schmidt takes another approach altogether. Here is a man with a purpose both to and within the story. Benjamin gives us insight into John in general, as well as into his relationship with his nieces, and with Andrew and Abby. More importantly, because of John's malicious intent for sending Benjamin to the Borden home, both John and Benjamin then become suspects in the murders, a theory that comes totally out of Schmidt's vivid imagination.

What brings all of this together is Schmidt's writing style throughout this novel, which I found both fascinating and disturbing. While on the one hand Schmidt gives each of her characters very distinctive voices, she also instills in all of them some level of discomfort. Bridget's distress starts out as annoyance in her treatment as an employee, and later the inability to cope with the double murder. Benjamin expresses more anger than anything else, which adds to the pain from the injury he has when Schmidt introduces him to the story. Emma's anxiety focuses mostly on Lizzie, as well as her guilt at trying to leave her sister behind and escape this toxic family.

Lizzie's narrative, on the other hand, constantly moves between strangely erratic to a type of sinister playfulness. Into all this, Schmidt intertwines the text with dark, poetic metaphors (including quite a few involving sticky-sweet pears) that further contribute to the overall eerie and gothic atmosphere.

One might think that this would make for a novel that is overly depressing or disturbing, rather than a gripping or forceful read (can you call a book you've read on Kindle a "page turner?"). Thankfully, the descriptions of blood and the bodies were somewhat less gruesome than they could have been, most probably because of the lyricism of Schmidt's prose. Despite all this, while I think Schmidt gave us a lusciously written, masterfully riveting novel (no small achievement for a debut work), something is preventing me from giving it a full five stars, and I can't put my finger on it. Maybe it's because this book (unpleasantly) haunted me, and maybe I'm ashamed of my own morbid curiosity, I'm not sure. All I know is, I couldn't stop reading it, and for that, I'll highly recommend it with a very strong four and a half stars out of five.
The Atomic Weight of Love
by Elizabeth Church
Devotion en masse (2/10/2017)
Meridian is very smart, and she wants to become an ornithologist, something very unusual for a girl growing up in post-WWI in America. With the support of her mother, and knowing she has the blessing of her late father she begins that journey. However, when she meets the brilliant lecturer Alden Whetstone and realizes she found her intellectual equal. After finishing her bachelor's degree, he convinces her to put off her graduate studies to follow him to his new top-secret job in Los Alamos, working to end the Second World War, through physics. With her life on hold, Meridian looks for meaning in her new surroundings.

On the surface, Meridian is the type of woman whose abilities, combined with an inner strength, are exactly what society at the time shunned. Her defiance of those norms wasn't very unusual, even for that time. However, even back then, people expected even educated women and their jobs to take a backseat to their husbands' careers. In this regard, when Meridian follows suit, we are not at all surprised. However, this was the first thing that disappointed me about this novel, even if being exceptional has somehow become the cliché in books of this sort.

Church tries to remedy this with Meridian's affair with a younger man later in life. With this part of her life, we get to know the passionate side of Meridian, and along with it, the coming-of-age realization of the depth of her regret for what she could have become. While this is heartening, here too we see a weakness in Meridian that we would certainly have preferred not to see. Of course, Church does this because otherwise, I don't think she thought that the ending of this book would have worked. Here too, I have to disagree to some extent, although not completely. The question is which is more of a cliché? A woman who knows she's repressing herself (or is a victim of repression), and stays in that situation anyway; or a woman who doesn't realize her potential until it is staring her in the face. In short, my feminist sensibilities tell me that Church didn't give me the kind of protagonist that I was looking for.

On the other hand, I also think that Church gave me exactly the type of character that was truly possible to imagine. Knowing this, you really can't help liking Meridian, mostly because Church's honest and open style makes her into a very sympathetic character. We do see where Meridian's rebellious side comes through, and we feel sorry for her when she can't take it just a little further. In my experience, when I see a character doing something I would have advised against, I usually get annoyed with the character (or the author). Not so here, where Church makes us see both sides of what Meridian is going through, and this makes us feel the same regrets that obviously Meridian is feeling. This isn't to say that Meridian is a pitiful character, since she does have enough small mutinies (and one very large one) to help us still admire her.

You can see my dilemma, can't you? While it seemed like Church sometimes allowed Meridian to take what seemed like the easy path, or at least the one most expected of women from her era, we also see that many of her decisions were fraught with difficult consequences. This dichotomy makes this book frustrating and rewarding at the same time. Not to mention the whole bird metaphor of their freedom that's closely observed, which despite the many references seemed a tenuous connection at best. Perhaps this is exactly what Church was going for, particularly if you think about this book's title.

Because of all this, I've been debating what star rating I should give this novel. I certainly want to recommend it, especially because I found Church's style to be inviting and compelling. However, in all honesty, because of my mixed feelings about Meridian, I'm unable to give it more than three and a half stars.

(This is a copy of my review that appeared on my personal blog The Chocolate Lady's Book Reviews.)
Flight of Dreams
by Ariel Lawhon
Titanic Flight (12/30/2016)
The Hindenburg was the famous Nazi zeppelin that blew up just as it was about to land in New Jersey in 1937. Built to be a modern aviation miracle, and the last word in luxury travel, this incident was not only tragic, but like the 1936 Olympics, it was quickly a black spot on Germany's national pride, at the exact time when they were trying to show their superiority in every way, shape or form possible. More importantly, why it blew up remains a mystery to this day. However, through the vivid imagination of Ariel Lawhon, we get a theory that until now, no one ever hypothesized, and thereby she turns history into a stunning mystery action novel!

Much like her previous novel, The Wife, the Maid and the Mistress, Lawhon tells this story by spotlighting a select group of crew and passengers, with each chapter focusing on a different person. In this case, Lawhon chose the stewardess, the journalist, the navigator, the American and the cabin boy. This is where Lawhon truly shines - taking facts of real events and people, making up fictional relationships and actions and then combining it all into a mystery that is both true and imagined, with a similar mix of solutions. Furthermore, Lawhon knows how to add background information that sounds like a perfectly natural part of the action, and thereby makes even the real-life events sound even more like part of the fiction.

Of course, this wouldn't work if Lawhon didn't write this to perfection, with each character so carefully developed and well rounded that we are sure the relationships she describes must have been for real. In the author's note, Lawhon tells us that practically all of the survivors called everything that happened prior to the explosion as "uneventful," but Lawhon doesn't believe them. That's probably why Lawhon decided to fill the five days crossing Europe and the Atlantic with many interesting events. Furthermore, she includes some sleuthing on the part of some of the passengers and crew, as well. Lawhon must have poured over the manifests of the crew and passengers and while checking the facts for consistency, so she could put together a set of back-stories for each of the main characters and thereby place each one into her spiders' web of connections. Using this formula, one could almost say that Lawhon takes historical fiction to a completely new level.

If that wasn't enough, Lawhon uses a very carefully calculated pace with this book. At the beginning of the novel, the separate stories gently rise and slowly start to blend into each other through some slight back-tracking from focus character to focus character. As the flight gets underway, the characters float around each other, intermingling and parting, as if on a breeze. As the time of the explosion nears, the speed of the stories start to increase and by the time we get to the explosion itself, the pace builds to a frenetic climax. Then, in the aftermath, everything takes just the right amount of time to slow and cool down, as she finishes telling each of the various stories. As you can see, this pacing is the perfect mirror of the flight itself, and you might find your heart rate increasing as you get to the climax, as well as at a loss for breath until you get to the last few chapters.

The only drawback I can find in this book is that I'm not totally convinced that all of the after-story chapters were completely necessary, but their brevity made up any feelings of it being overly drawn-out. Still, this tiny niggle isn't enough for me to reduce my rating by even half a star, so I'm giving it a full five out of five and recommending this wholeheartedly!
Britt-Marie Was Here
by Fredrik Backman
Baking Soda and Soccer (5/31/2016)
Every so often, a writer comes along who can write a story with characters that touch you to your very core. Fredrik Backman is one of those writers - he did it with his first novel A Man Called Ove, repeated this with his second novel My Grandmother Sends Her Regrets and Apologizes, and he's done it again with Britt-Marie Was Here. Backman finds his way into your heart by giving us an ordinary, sometimes an annoying person, who has something very special, deep inside them that they don't know exists. Britt-Marie is one of these people. In his latest novel, Backman slowly peels away at all the things Britt-Marie has built around her to hide behind, in order to find something precious.

The story begins with Britt-Marie having left her husband Kent at the hospital after he had a heart attack while he was with his mistress. Through sheer tenacity, and infuriating persistence, Britt-Marie gets a temporary job as the caretaker of the recreation center in Borg. The problem is that the tiny village of Borg is practically a ghost town, but its remaining residents are no less tenacious and no less than infuriatingly persistent than Britt-Marie. Furthermore, neither Britt-Marie nor Borg intends to change who they are, in any way, shape, or form, except… neither could they imagine the outcome of this unstoppable force meeting that immovable object.
Fans of Backman's work will of course recognize Britt-Marie as being one of the characters he developed for his last novel, My Grandmother Sends Her Regrets and Apologizes. I have the feeling that Backman probably fell in love with Britt-Marie's irascible character, possibly because she reminded him of his first protagonist, Ove. However, to tell the truth, it really doesn't matter if that was his reason for writing this novel, we can only thank the literary gods above that he wrote it, because as amazing as his first two novels were, this one is even better.

Usually this is where I tell you what it was that made me fall in love with this book; I would probably take this space to talk about character development, aspects of the protagonist, writing style, plot development and more. However, in this instance, I can't, because I fear that I'd end up reiterating everything I have already said about Backman's previous two novels. Furthermore, I'd probably end up effusing so much praise with hyperbole of admiration that you'd get bored. Instead, let me tell you that if you haven't read any of Backman's novels, you really should, and it doesn't matter which of the three you start with - although I would recommend that you should read this book after you've read My Grandmother. Mind you, that doesn't mean that this book isn't stand-alone, but I think readers will appreciate this book more if they read about Britt-Marie first as secondary character first.

Finally, of course there is no reason for me to defend my rating of a full five out of five stars for this novel. Backman has done it again, and it looks like this book will rank high on my list of my five favorite books of the year - for a third year in a row! Read this book, read Backman, you'll never regret it - and that's something Britt-Marie can certainly appreciate.
The Last Painting of Sara de Vos: A Novel
by Dominic Smith
Landscapes of Deception (4/29/2016)
In reality, none of Sarah van Baalbergen's works survived, but Dominic Smith decided to turn the few known facts about her into fiction by renaming her as Sara de Vos and resurrecting her work. Smith grabs your attention from the very first moments, with the scenes of Sara with her husband and daughter on an outing to see a beached whale, which her husband decides to paint. When Sara suggests drawing the scene from an elevated viewpoint (which her husband rejects), we immediately realize that this is no ordinary woman. She has a rare talent that the world refuses to allow her to express because of her gender. Then Smith turns to 1950s Ellie; she too has unique gifts, but once again, her peers ignore her because she is a woman. This lovely parallel flows underneath almost the whole novel, tinting the action with splashes of feminism along the way - in various shades of prematurity. (Sorry for all the art metaphors, but I couldn't resist!)

One thing I adored about this novel was how very different Smith made the 17th century parts feel from the more contemporary sections. The whole atmosphere surrounding Sara de Vos and her life felt almost like it was written by another author altogether. Obviously, Smith's in-depth research imbued him with a need to shade these passages with a very different color pallet, one with more muted and subdued tones (for wont of better metaphors). This could have felt disjointed, but Smith also let this slip into the passages when Ellie is working on copying Sara's painting. In this way, Smith gracefully smoothed the edges between the 17th century and the mid-20th century passages - bravo to Smith for that! This novel had me fascinated from the very first pages and held my attention throughout. Although there were a few small things that didn't work for me, the vast majority did, and because of this, I'll warmly recommend this novel and give it a solid four out of five stars.
Invisible City: A Rebekah Roberts Novel
by Julia Dahl
The darkness beneath the black hats and wigs (3/18/2015)
To tell the truth, crime dramas aren't really my thing. But being Jewish, I found the connection to the ultra-orthodox or Hassidic world was what drew me to this book. Their world is famous (or perhaps I should say infamous) for being insular and separatist to the extreme, and this is what makes them so fascinating. Their wanting to remain that way also forces these communities to use whatever means possible to cover up any imperfections that might make them liable to scrutiny from the outside world. In a democracy, one of those means is their ability to use their large blocks of votes in exchange for elected officials turning blind eyes to their internal goings on and private organizations. So when Rebekah sees the body of the dead woman taken away by a Jewish burial society instead of the Medical Examiner, questions start to arise. Of course, these questions also lead Rebekah to discovering more about the community her mother grew up in, left and then returned to.

One of the first things you'll notice about this book is the writing style. Dahl first person account is imbued with a gruffness that is well in keeping with the crime-beat journalism scene. While this might seem a bit more hard-boiled than a reporter this young might use, it does work well in the setting. This tone makes more sense when you realize Rebekah has lived her whole life estranged from her biological mother, and all she knew about her was shrouded in various levels of anger and doubt. This is toughness is well tempered with a vulnerability that comes with her youth combined with the innate insecurity of someone just starting out in her career. With this mixture, it then becomes reasonable that Rebekah is of two minds regarding finding her mother. In short, Dahl has brought us a marvelously developed and changing character that acts and reacts to her surroundings and the situations they present with a lovely balance of the expected and unexpected. There is no doubt that Dahl's Rebekah Roberts is exactly the type of protagonist that crime fiction readers will want to follow for several volumes.

I should mention that Dahl has also done a very good job dealing with writing about the Hasidic community. Often writers have a difficult time delving into a part of society that is the source of rumors and conjecture without coming up factually short. The Hasidic community in particular isn't one that will open its doors for investigation. Even when they do, their trepidation will often prevent researchers from getting too close to any uncomfortable truths. But Rebekah is technically Jewish and that does open some lines of hesitant communication that would otherwise be closed. My only problem with this premise is that I'm not convinced they would have been quite as forthcoming as Dahl makes them, partially because of Rebekah's gender. This isn't to say that they're all tripping over themselves to reveal their dirty secrets, but one or two male characters did seem a bit more communicative with a female than I would have expected. Still, this is hardly anything that most readers would notice, and I'm willing to believe that behavior among the ultra-orthodox in Israel that I've experienced isn't exactly the same as those living in New York.

With the setting and characters all in place, what would a good crime drama be without a good plot? Dahl's murder here is what underlies this story, and in the best traditions of any mystery, she leads us down blind alleys and towards her eventual twist without revealing too much. In fact, her clues are so subtle that I was actually surprised to find out who the murderer was, and I'm usually very good at figuring these things out. Dahl does this with a very even pace throughout most of the book, so that when the climax finally comes she can let the adrenaline kick in, and take it all up a notch, making for a truly exciting reveal. This shows an exceptional talent for a debut novelist, and if she can repeat this in her next novel, she'll be well on her way to being a superstar. All of this is to say that I have to give "Invisible City" by Julia Dahl an extremely strong four and a half stars out of five, and highly recommend it to even people who don't usually read crime drama.

BookBrowse Book Club

Book Jacket
The Cover Girl
by Amy Rossi
Find them early enough, and they will always be her girls.

Members Recommend

  • Book Jacket
    The Sister's Curse
    by Nicola Solvinic
  • Book Jacket
    The Lost Story of Eva Fuentes
    by Chanel Cleeton
    A mysterious book links three women across generations in this novel by New York Times bestselling author Chanel Cleeton.
  • Book Jacket
    The Vanishing Place
    by Zoë Rankin
Who Said...

The good writer, the great writer, has what I have called the three S's: The power to see, to sense, and to say. ...

Click Here to find out who said this, as well as discovering other famous literary quotes!

Book
Trivia
  • Book Trivia

    Can you name the title?

    Test your book knowledge with our daily trivia challenge!

Wordplay

Solve this clue:

W the C A the M W P

and be entered to win..

Your guide toexceptional          books

BookBrowse seeks out and recommends the best in contemporary fiction and nonfiction—books that not only engage and entertain but also deepen our understanding of ourselves and the world around us.

 


Debugging Information
ColdFusion Server Developer 2021,0,13,330286
Template /readers/index.cfm
Time Stamp 01-Jun-26 06:41 AM
Locale en
User Agent Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Remote IP 127.0.0.1
Host Name 127.0.0.1


Execution Time

Total Time Avg Time Count Template
1780296098085 ms 1.78029609809E+012 ms 1 /root/website/app_server.cfm
6776 ms 6776 ms 1 /root/website/readers/index.cfm
6127 ms 6127 ms 1 /root/website/readers/dsp_profile.cfm
4256 ms 473 ms 9 /root/website/queries/qry_get_book_by_id.cfm
352 ms 352 ms 1 /root/website/app_globals.cfm
259 ms 52 ms 5 /root/website/queries/qry_get_preview_by_id_for_search.cfm
244 ms 244 ms 1 /root/website/app_layout.cfm
191 ms 191 ms 1 /root/website/actions/adstatus.cfm
147 ms 147 ms 1 /root/website/site/blocks/layout/dsp_right_column.cfm
118 ms 24 ms 5 /root/website/queries/qry_get_preview_awards_by_id.cfm
101 ms 51 ms 2 /root/website/adsystem/adsystem_mod.cfm
82 ms 82 ms 1 /root/website/site/blocks/dsp_border_first_impressions.cfm
81 ms 81 ms 1 /root/website/queries/qry_get_arcs_for_ad.cfm
59 ms 59 ms 1 /root/website/site/blocks/layout/dsp_footer.cfm
57 ms 57 ms 1 /root/website/adzones/showcase_track.cfm
45 ms 45 ms 1 /root/website/adzones/AdZone6.cfm
44 ms 44 ms 1 /root/website/queries/qry_get_active_obc.cfm
33 ms 33 ms 1 /root/website/site/blocks/layout/dsp_bottom_block.cfm
32 ms 32 ms 1 /root/website/queries/qry_get_free_newsletters.cfm
31 ms 31 ms 1 /root/website/act_check_login.cfm
31 ms 31 ms 1 /root/website/queries/qry_get_member_info.cfm
30 ms 30 ms 1 /root/website/queries/qry_get_following_count.cfm
29 ms 29 ms 1 /root/website/queries/qry_get_reviews_by_member.cfm
20 ms 20 ms 1 /root/website/queries/qry_get_member_profile.cfm
19 ms 19 ms 1 /root/website/queries/qry_get_current_competition.cfm
18 ms 18 ms 1 /root/website/queries/qry_get_follower_count.cfm
17 ms 17 ms 1 /root/website/site/blocks/dsp_book_giveaway.cfm
15 ms 5 ms 3 /root/website/actions/act_spider_tracker.cfm
15 ms 15 ms 1 /root/website/queries/qry_get_current_wordplay.cfm
9 ms 9 ms 1 /root/website/actions/udfs.cfm
2 ms 2 ms 1 /root/website/site/blocks/layout/dsp_header.cfm
1 ms 1 ms 1 /root/website/queries/qry_get_current_ezine.cfm
1 ms 1 ms 1 /root/website/queries/qry_get_previous_arcs_for_ad.cfm
1 ms 1 ms 1 /root/website/site/blocks/layout/head.cfm
1 ms 1 ms 1 /root/website/site/blocks/layout/main_menu.cfm
1 ms 1 ms 1 /root/website/site/blocks/layout/main_search.cfm
0 ms 0 ms 1 /root/website/Application.cfm
0 ms 0 ms 1 /root/website/act_libraryIPLogin.cfm
0 ms 0 ms 1 /root/website/banners/ad_594.cfm
0 ms 0 ms 1 /root/website/formurl2attributes.cfm
0 ms 0 ms 1 /root/website/js/fbjavascriptsdk.cfm
0 ms 0 ms 1 /root/website/queries/qry_get_reader_reviews_power_reviewers.cfm
0 ms 0 ms 1 /root/website/site/blocks/dsp_border_booktalk.cfm
0 ms 0 ms 1 /root/website/site/blocks/dsp_header_newsletter.cfm
0 ms 0 ms 1 /root/website/site/blocks/dsp_wordplay.cfm
0 ms 0 ms 1 /root/website/site/blocks/email_modal.cfm
0 ms 0 ms 1 /root/website/site/blocks/layout/google_tags.cfm
0 ms 0 ms 1 /root/website/site/blocks/layout/header_announcement.cfm
1 ms  STARTUP, PARSING, COMPILING, LOADING, & SHUTDOWN
6777 ms  TOTAL EXECUTION TIME
red = over 250 ms average execution time


SQL Queries

spidercheck (Datasource=bookbrowse_com_new, Time=15ms, Records=1) in /root/website/actions/act_spider_tracker.cfm @ 06:41:38.038
SELECT	a.bot_number
        FROM	bots a
        WHERE	charindex(a.bot_name, ?) > 0
		OR a.bot_ip = ?
Query Parameter Value(s) -
Parameter #1(cf_sql_varchar) = Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Parameter #2(cf_sql_varchar) = 127.0.0.1

get_member_info (Datasource=bookbrowse_com_new, Time=30ms, Records=0) in /root/website/queries/qry_get_member_info.cfm @ 06:41:38.038
select 	a.*, 
    		b.member_account_type_name, b.member_account_type_charge, b.member_account_type_charge_frequency,  b.member_account_type_months, 
            c.member_chargetype_name, c.member_chargetype_number, a.member_classification_number, a.member_book_format
	
    from members a, member_account_types b, member_chargetype c
	
    where a.member_account_type_number = b.member_account_type_number
	and a.payment_method_id = c.member_chargetype_number
	and a.member_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 0

adactive (Datasource=bookbrowse_com_new, Time=189ms, Records=2) in /root/website/actions/adstatus.cfm @ 06:41:38.038
SELECT	viewby, section
    FROM	adsystem 
    WHERE	active  = 1 
    AND		start_date <= GETDATE()
    AND 	(viewby = ? OR viewby = 'all')
Query Parameter Value(s) -
Parameter #1(CF_SQL_VARCHAR) = non

get_current_ezine (Datasource=bookbrowse_com_new, Time=0ms, Records=1, Cached Query) in /root/website/queries/qry_get_current_ezine.cfm @ 06:41:38.038
select		top 1 ezine_number, ezine_dt, ezine_image, ezine_brief_description, ezine_introduction
from		ezines
where		ezine_active_flag = 1
and 		ezine_type_number = 4
and			ezine_dt < getdate()
order by 	ezine_dt DESC
get_current_wordplay (Datasource=bookbrowse_com_new, Time=11ms, Records=1) in /root/website/queries/qry_get_current_wordplay.cfm @ 06:41:38.038
SELECT		a.wordplay_number, a.wordplay_dt, a.wordplay_name, a.wordplay_intro_text, b.wordplay_puzzle_number, b.wordplay_puzzle_question
    FROM		wordplays a 
	INNER JOIN	wordplay_puzzle_mapping c on c.wordplay_number = a.wordplay_number
	INNER JOIN	wordplay_puzzles b on b.wordplay_puzzle_number = c.wordplay_puzzle_number
	WHERE		a.wordplay_number = (	select top 1 a.wordplay_number
                                from wordplays a, wordplay_puzzles b, wordplay_puzzle_mapping c
                                where a.wordplay_number = c.wordplay_number
                                and b.wordplay_puzzle_number = c.wordplay_puzzle_number
                                and a.wordplay_dt < getdate()
                                and a.wordplay_expiration_dt > dateadd(day, -1, getdate())
                                order by a.wordplay_dt asc
                                )
get_ComNo (Datasource=bookbrowse_com_new, Time=7ms, Records=0) in /root/website/queries/qry_get_current_competition.cfm @ 06:41:38.038
SELECT 	TOP 1 	x.competition_number, x.bb_briefs_flag
	from			competitions x
	
		WHERE	x.competition_dt <= getdate()
		AND		x.competition_expiration_dt > dateadd(d,-1,getdate())
get_current_competition (Datasource=bookbrowse_com_new, Time=10ms, Records=0) in /root/website/queries/qry_get_current_competition.cfm @ 06:41:38.038
SELECT 	x.competition_number, x.book_number, x.competition_teaser_title, x.competition_teaser_description, x.competition_intro_text, x.competition_expiration_dt, x.bb_briefs_flag, x.competition_full_info_flag, x.competition_type, x.competition_optin,x.competition_optin_text, 
				a.book_title as "title",
				(b.author_first_name + ' ' +  b.author_middle_initial + ' ' + b.author_last_name) as "author",
	            f.edition_publish_dt AS "hardcover_publish_dt", f.edition_jacket_image as "hardcover_jacket_image",
				g.edition_publish_dt AS "paperback_publish_dt", g.edition_jacket_image as "paperback_jacket_image"
	
		FROM 		competitions x
		INNER JOIN	books a on a.book_number = x.book_number
		INNER JOIN	book_author_mapping c on c.book_number = x.book_number
		INNER JOIN	authors b on c.author_number = b.author_number
		LEFT JOIN	editions f on a.book_number = f.book_number and f.edition_paperback_flag = 0
		LEFT JOIN	editions g on a.book_number = g.book_number and g.edition_paperback_flag = 1

		WHERE		x.competition_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 0

get_previous_arcs_for_ad (Datasource=bookbrowse_com_new, Time=0ms, Records=0, Cached Query) in /root/website/queries/qry_get_previous_arcs_for_ad.cfm @ 06:41:38.038
SELECT 	a.arc_number,a.arc_client_url,a.arc_active_dt, a.arc_off_ad_dt,
		b.ezine_preview_number, b.ezine_preview_title, b.ezine_preview_subtitle, b.ezine_preview_jacket_image, b.ezine_preview_author, b.ezine_preview_publisher, 
		b.ezine_preview_publish_dt, b.ezine_preview_jacket_desc, b.ezine_preview_number_of_pages, b.ezine_preview_bb_comments, b.ezine_preview_isbn13,
		c.ezine_preview_category_name AS "ezine_preview_category",
		(select count(*) from arc_allocator d where d.arc_number = a.arc_number and arc_allocator_review_approved_flag = 1) as "reviews",
		(select (CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,0))) AS numeric(12,0)))+
				(CASE WHEN right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) > 25 AND right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) < 50 THEN 0.5
				 WHEN right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) > 50 AND right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) < 75 THEN -0.5
				 ELSE 0
				 END)
 			from arc_allocator	where arc_number = a.arc_number and arc_allocator_review_approved_flag = 1) AS arcrating,
 			(select (CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,1))) AS numeric(12,1)))from arc_allocator where arc_number = a.arc_number and arc_allocator_review_approved_flag = 1) AS "decrating"

FROM arcs a
INNER JOIN ezine_previews b ON b.ezine_preview_number = a.ezine_preview_number
INNER JOIN ezine_preview_categories c ON b.ezine_preview_category_number = c.ezine_preview_category_number

WHERE arc_closed_flag = 1
AND arc_obc_flag = 0
AND getdate() >= arc_on_ad_dt
AND getdate() < arc_off_ad_dt

ORDER BY a.arc_on_ad_dt DESC
get_future_obc (Datasource=bookbrowse_com_new, Time=20ms, Records=0) in /root/website/queries/qry_get_active_obc.cfm @ 06:41:38.038
SELECT 		a.arc_forumidfk, a.discourse_flag, a.arc_promo_text, arc_on_ad_dt,
				b.ezine_preview_number, b.ezine_preview_title, b.ezine_preview_subtitle, b.ezine_preview_jacket_image, b.ezine_preview_author, b.ezine_preview_jacket_desc, b.ezine_preview_publisher, ezine_preview_publish_dt, ezine_preview_number_of_pages, ezine_preview_isbn, ezine_preview_short_summary,
	            b.ezine_preview_bb_author_link, ezine_preview_bb_link
	
	FROM 		arcs a
	INNER JOIN 	ezine_previews b ON b.ezine_preview_number = a.ezine_preview_number
	
	WHERE 		arc_obc_flag = 1

	AND 		getdate() < arc_on_ad_dt
	
		ORDER BY  	NEWID()
get_active_obc (Datasource=bookbrowse_com_new, Time=9ms, Records=1) in /root/website/queries/qry_get_active_obc.cfm @ 06:41:38.038
SELECT 		a.arc_forumidfk, a.discourse_flag, a.arc_promo_text,
				b.ezine_preview_number, b.ezine_preview_title, b.ezine_preview_subtitle, b.ezine_preview_jacket_image, b.ezine_preview_author, b.ezine_preview_jacket_desc, b.ezine_preview_publisher, ezine_preview_publish_dt, ezine_preview_number_of_pages,  ezine_preview_isbn, ezine_preview_short_summary,
	            b.ezine_preview_bb_author_link, ezine_preview_bb_link,
	            c.book_reading_guide
	
	FROM 		arcs a
	INNER JOIN 	ezine_previews b ON b.ezine_preview_number = a.ezine_preview_number
	LEFT JOIN  	books c on c.book_number = b.ezine_preview_bb_link
	
	WHERE 		a.arc_obc_flag = 1
	AND			a.arc_active_flag = 0
	AND 		arc_closed_flag = 1
	AND 		getdate() >= arc_on_ad_dt
	AND 		getdate() < arc_off_ad_dt
	ORDER BY  	NEWID()
get_recent_obc (Datasource=bookbrowse_com_new, Time=11ms, Records=4) in /root/website/queries/qry_get_active_obc.cfm @ 06:41:38.038
SELECT 		a.arc_forumidfk, a.discourse_flag, a.arc_promo_text,
				b.ezine_preview_number, b.ezine_preview_title, b.ezine_preview_subtitle, b.ezine_preview_jacket_image, b.ezine_preview_author, b.ezine_preview_jacket_desc, b.ezine_preview_publisher, ezine_preview_publish_dt, ezine_preview_number_of_pages,  ezine_preview_isbn, ezine_preview_short_summary,
	            b.ezine_preview_bb_author_link, ezine_preview_bb_link,
	            c.book_reading_guide
	
	FROM 		arcs a
	INNER JOIN 	ezine_previews b ON b.ezine_preview_number = a.ezine_preview_number
	LEFT JOIN  	books c on c.book_number = b.ezine_preview_bb_link
	
	WHERE a.arc_number IN (select top 4 arc_number
							from		arcs
							WHERE 		arc_obc_flag = 1
							AND			arc_active_flag = 0
							AND 		arc_closed_flag = 1
							AND 		getdate() > arc_off_ad_dt
							ORDER BY	arc_on_ad_dt DESC)
	ORDER BY  	NEWID()
get_member_profile (Datasource=bookbrowse_com_new, Time=20ms, Records=1) in /root/website/queries/qry_get_member_profile.cfm @ 06:41:38.038
SELECT  m.member_number, m.discourse_username, m.member_first_name, m.member_last_name, m.profile_image_url, m.member_full_name, m.member_bio, m.external_link, m.member_classification_number, m.member_email
        FROM    members m
        WHERE   m.member_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 9304

get_reviews_by_member (Datasource=bookbrowse_com_new, Time=28ms, Records=14) in /root/website/queries/qry_get_reviews_by_member.cfm @ 06:41:38.038
SELECT  a.book_number, a.ezine_preview_number, a.reader_review_number,
            COALESCE(NULLIF(LTRIM(RTRIM(m.discourse_username)), ''), NULLIF(LTRIM(RTRIM(a.reader_review_reviewer_name)), '')) AS reader_review_reviewer_name,
            a.reader_review_title, a.reader_review_rating, a.reader_review_description, a.reader_review_dt,
            (SELECT COUNT(*) FROM reader_review_likes rl WHERE rl.reader_review_number = a.reader_review_number) AS like_count
    FROM    reader_reviews a
    LEFT OUTER JOIN members m ON m.member_number = a.member_number
    WHERE   a.member_number = ?
    AND     a.reader_review_approved_flag = 1
    
        ORDER BY a.reader_review_dt DESC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 9304

get_follower_count (Datasource=bookbrowse_com_new, Time=18ms, Records=1) in /root/website/queries/qry_get_follower_count.cfm @ 06:41:38.038
SELECT COUNT(*) AS follower_count
    FROM member_follows
    WHERE followed_member_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 9304

get_following_count (Datasource=bookbrowse_com_new, Time=29ms, Records=1) in /root/website/queries/qry_get_following_count.cfm @ 06:41:38.038
SELECT COUNT(*) AS following_count
    FROM member_follows
    WHERE follower_member_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 9304

get_reviewer_number (Datasource=bookbrowse_com_new, Time=24ms, Records=1) in /root/website/readers/dsp_profile.cfm @ 06:41:38.038
SELECT TOP 1 reviewer_number
                FROM reviewers
                WHERE reviewer_email = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_VARCHAR) = drchazan@gmail.com

get_reader_reviews_power_reviewers (Datasource=bookbrowse_com_new, Time=0ms, Records=50, Cached Query) in /root/website/queries/qry_get_reader_reviews_power_reviewers.cfm @ 06:41:38.038
SELECT 		top 50 reader_review_reviewer_email_address, count(reader_review_reviewer_email_address) as "count"
	FROM 		reader_reviews
	WHERE 		reader_review_reviewer_email_address like '%@%'
	AND 		reader_review_reviewer_email_address <> 'reviews@bookbrowse.com'
	GROUP BY 	reader_review_reviewer_email_address
	
	
	ORDER BY 	count desc
get_reviewer_details (Datasource=bookbrowse_com_new, Time=11ms, Records=1) in /root/website/readers/dsp_profile.cfm @ 06:41:38.038
SELECT reviewer_photo, reviewer_bio, reviewer_first_name, reviewer_last_name
            FROM reviewers
            WHERE reviewer_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 75

get_editorial_reviews (Datasource=bookbrowse_com_new, Time=1019ms, Records=26) in /root/website/readers/dsp_profile.cfm @ 06:41:39.039
SELECT  d.book_number, d.book_title, d.book_sub_title,
                    e.ezine_dt,
                    ep.ezine_preview_number, ep.ezine_preview_title, ep.ezine_preview_subtitle,
                    ep.ezine_preview_author, ep.ezine_preview_jacket_image,
                    mr.media_review_rating,
                    LEFT(mr.media_review, 500) AS review_excerpt
            FROM    ezine_edition_mapping b
            INNER JOIN editions c ON c.edition_number = b.edition_number
            INNER JOIN books d ON d.book_number = c.book_number
            INNER JOIN ezines e ON e.ezine_number = b.ezine_number
            LEFT JOIN ezine_previews ep ON ep.ezine_preview_isbn13 = c.edition_isbn13
                AND ep.ezine_preview_isbn13 IS NOT NULL AND LEN(ep.ezine_preview_isbn13) > 0
            LEFT JOIN media_reviews mr ON mr.book_number = c.book_number AND mr.media_review_type_number = 9
            WHERE   b.reviewer_number = ?
            AND     e.ezine_dt = (SELECT TOP 1 ez.ezine_dt
                                  FROM ezines ez
                                  INNER JOIN ezine_edition_mapping eem ON eem.ezine_number = ez.ezine_number
                                  INNER JOIN editions ed ON ed.edition_number = eem.edition_number
                                  WHERE ed.book_number = c.book_number
                                  ORDER BY ez.ezine_dt ASC)
            ORDER BY e.ezine_dt DESC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 75

get_book_by_id (Datasource=bookbrowse_com_new, Time=44ms, Records=1) in /root/website/queries/qry_get_book_by_id.cfm @ 06:41:39.039
SELECT		a.book_number, a.book_title, a.book_sub_title, a.book_url, a.book_entry_dt, a.book_short_summary, a.book_excerpt, a.book_jacket_info, a.book_reading_guide, a.book_copyright_info, a.book_notes,
            	b.author_number, b.author_first_name, b.author_last_name, b.author_middle_initial,
            	f.edition_publish_dt AS "hardcover_publish_dt", f.edition_number_of_pages AS "hardcover_number_of_pages", f.edition_isbn AS "hardcover_isbn", f.edition_isbn13 "hardcover_isbn13", f.edition_jacket_image as "hardcover_jacket_image", f.edition_publisher as "hardcover_publisher",
            	g.edition_publish_dt AS "paperback_publish_dt", g.edition_number_of_pages AS "paperback_number_of_pages", g.edition_isbn AS "paperback_isbn", g.edition_isbn13 "paperback_isbn13", g.edition_jacket_image as "paperback_jacket_image", g.edition_publisher as "paperback_publisher",
            	i.author_info_interview, i.author_info_biography,i.author_info_image,
            	CASE WHEN datalength(author_middle_initial) = 1 THEN author_first_name + ' ' + author_middle_initial + ' ' + author_last_name
            		 ELSE author_first_name + ' ' + author_last_name
            		 END "author_name",
            	CASE WHEN 
					(select count(*) from editions where book_number = 4364) = 1
					AND
					(select count(*) from editions where book_number = 4364 and edition_paperback_flag = 1) = 1
				THEN 1
				ELSE 0
				END AS "po_flag",
				(select count(*) from book_author_mapping m where m.author_number = b.author_number)
				+
				(select count(*) from ezine_previews where ezine_preview_bb_author_link = b.author_number and ezine_preview_bb_link =0)
				 as 'author_bookcount',
            	(SELECT CAST(AVG(CAST(rating AS decimal(12,0))) AS decimal(12,1))
				FROM (
					SELECT reader_review_rating AS rating
					FROM reader_reviews
					WHERE book_number = a.book_number
					AND reader_review_rating > 0
					
					UNION ALL
					
					SELECT reading_list_book_rating AS rating
					FROM reading_lists
					WHERE book_number = CAST(a.book_number AS VARCHAR)
					AND reading_list_book_rating > 0
				) combined_ratings
			) "savrating",
			(SELECT COUNT(rating)
				FROM (
					SELECT reader_review_rating AS rating
					FROM reader_reviews
					WHERE book_number = a.book_number
					AND reader_review_rating > 0
					
					UNION ALL
					
					SELECT reading_list_book_rating AS rating
					FROM reading_lists
					WHERE book_number = CAST(a.book_number AS VARCHAR)
					AND reading_list_book_rating > 0
				) combined_ratings
			) as "savrating_count",
            	(select top 1 media_review_rating from media_reviews where book_number = a.book_number and media_review_type_number = 9) as "bbrating",
            	(select cast(AVG(CAST(media_review_rating AS numeric(12,2)))AS decimal(12,1)) from media_reviews where book_number = a.book_number and media_review_type_number <> 7 and media_review_rating > 0) "scritrating",
				(SELECT COUNT(media_review_rating) FROM media_reviews WHERE book_number = a.book_number AND media_review_type_number <> 7 AND media_review_rating > 0) as "scritrating_count",
            	(select top 1 gg.ezine_number from ezine_edition_mapping aa, editions bb, books cc, ezines gg            	
            	where aa.edition_number = bb.edition_number and bb.book_number = cc.book_number and aa.ezine_number = gg.ezine_number 
            	and cc.book_number = a.book_number and gg.ezine_bbsays_flag = 1 and gg.ezine_active_flag = 1) as "ezine_number",
				cgm.category_number,
				cgya.category_number AS "ya_flag"
				
,(select top 1 publisher_holding_company from publishers where (publisher_imprint like f.edition_publisher OR publisher_imprint like g.edition_publisher) AND publisher_holding_company LIKE 'Harper%') AS "publisher_holding_company"		
        
    FROM		books a 
    INNER JOIN	book_author_mapping c ON c.book_number = a.book_number
    INNER JOIN	authors b ON b.author_number = c.author_number  
    INNER JOIN	author_info i ON i.author_number = b.author_number
    
    LEFT JOIN	editions f ON f.book_number = a.book_number AND f.edition_paperback_flag = 0
    LEFT JOIN	editions g ON g.book_number = a.book_number AND g.edition_paperback_flag = 1
    LEFT JOIN	category_book_mapping cgm on cgm.book_number = a.book_number AND cgm.category_number = 48
    LEFT JOIN	category_book_mapping cgya on cgya.book_number = a.book_number AND cgya.category_number = 40
          
    WHERE 		a.book_number = ?
         
    ORDER BY	c.book_author_mapping_number
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 4133

get_media_reviews_by_book_id (Datasource=bookbrowse_com_new, Time=380ms, Records=10) in /root/website/queries/qry_get_book_by_id.cfm @ 06:41:40.040
SELECT		a.media_review_number, 
				a.book_number, 
				a.media_review_type_number, 
				a.media_review_title, 
				a.media_review_rating, 
				a.media_review, 
				a.media_review_old,
	
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 (case when dbo.WordCount(c.ezine_review_2) > 0 then dbo.WordCount(c.ezine_review_2) + dbo.WordCount(c.ezine_extras) 
                                                                                    else dbo.WordCount(c.ezine_review) 
                                                                                    end)
                                                                from ezine_edition_mapping c
                                                                INNER JOIN editions d ON (d.edition_number = c.edition_number)
                                                                INNER JOIN ezines e ON e.ezine_number = c.ezine_number
                                                                WHERE d.book_number = ?
                                                                
                                                                ORDER BY e.ezine_number ASC)
	 			ELSE 0 
	 			END  "wordc",
				
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 reviewer_number
		 														 from ezine_edition_mapping c
		 														 INNER JOIN editions d ON (d.edition_number = c.edition_number)
																 INNER JOIN ezines e ON e.ezine_number = c.ezine_number
		 														 WHERE d.book_number = ?
		 														 AND e.ezine_bbsays_flag = 1
																 ORDER BY d.edition_publish_dt DESC)
	 			ELSE 1
				END "reviewer_number",
				
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 reviewer_first_name + ' ' + reviewer_last_name AS "reviewer_name"
		 														 from ezine_edition_mapping c
		 														 INNER JOIN editions d ON (d.edition_number = c.edition_number)
																 INNER JOIN ezines e ON e.ezine_number = c.ezine_number
																 INNER JOIN reviewers r on r.reviewer_number = c.reviewer_number
		 														 WHERE d.book_number = ?
		 														 AND e.ezine_bbsays_flag = 1
																 ORDER BY d.edition_publish_dt DESC)
	 			END "reviewer_name"
	
	FROM		media_reviews a, media_review_types b
	
	WHERE		a.book_number IN (select distinct c.book_number from categories a, category_book_mapping b, book_author_mapping c where a.category_number = b.category_number and a.category_active_flag = 1 and b.book_number = c.book_number)
	AND			a.book_number = ?
	AND			a.media_review_type_number = b.media_review_type_number
	
	ORDER BY	b.media_review_type_sort_order ASC, media_review_rating DESC, media_review_title ASC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 4133
Parameter #2(CF_SQL_INTEGER) = 4133
Parameter #3(CF_SQL_INTEGER) = 4133
Parameter #4(CF_SQL_INTEGER) = 4133

get_book_image (Datasource=bookbrowse_com_new, Time=16ms, Records=1) in /root/website/actions/udfs.cfm @ 06:41:40.040
select 	f.edition_publish_dt "hardcover_publish_dt", f.edition_jacket_image "hardcover_jacket_image", 
            g.edition_publish_dt "paperback_publish_dt", g.edition_jacket_image "paperback_jacket_image"
    
    from   	books a
	left join editions f on a.book_number = f.book_number and f.edition_paperback_flag = 0
	left join editions g on a.book_number = g.book_number and g.edition_paperback_flag = 1
                    
    where 	a.book_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 4133

get_coauthor (Datasource=bookbrowse_com_new, Time=19ms, Records=1) in /root/website/actions/udfs.cfm @ 06:41:40.040
select 		book_number, 
            			CASE	WHEN datalength(d.author_middle_initial) > 1 
				                THEN d.author_first_name + ' ' + d.author_middle_initial + ' ' + d.author_last_name
				                ELSE d.author_first_name + ' ' + d.author_last_name
                        END "author",
                        d.author_number
            from		book_author_mapping e
            inner join	authors d ON e.author_number = d.author_number
            where		e.book_number = ?
			order by	book_author_mapping_number ASC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 4133

get_preview_by_id (Datasource=bookbrowse_com_new, Time=14ms, Records=1) in /root/website/queries/qry_get_preview_by_id_for_search.cfm @ 06:41:40.040
SELECT 	ezine_preview_number,
            ezine_preview_title, 
            ezine_preview_subtitle, 
            ezine_preview_author, 
            ezine_preview_publisher,
            ezine_preview_publish_dt,
            ezine_preview_number_of_pages, 
            ezine_preview_short_summary,
            ezine_preview_jacket_image,
            ezine_preview_reviews,
            ezine_preview_jacket_desc,
			ezine_preview_reading_guide,
            ezine_preview_isbn,
            ezine_preview_isbn13,
            ezine_preview_rating,
            ezine_preview_bb_author_link
            				
    FROM 	ezine_previews
    WHERE 	ezine_preview_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 14998

get_author_name (Datasource=bookbrowse_com_new, Time=30ms, Records=1) in /root/website/queries/qry_get_preview_by_id_for_search.cfm @ 06:41:40.040
SELECT 	a.author_number, datalength(b.author_info_interview) as "interview",
		        CASE 	WHEN datalength(a.author_middle_initial) > 0 then a.author_first_name + ' ' + a.author_middle_initial + '. ' + a.author_last_name
		            	ELSE a.author_first_name + ' ' + a.author_last_name
		            	END "author_name"
        FROM 		authors a
        INNER JOIN 	author_info b on b.author_number = a.author_number 
        
        WHERE 		a.author_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3901

get_preview_awards_by_id (Datasource=bookbrowse_com_new, Time=12ms, Records=0) in /root/website/queries/qry_get_preview_awards_by_id.cfm @ 06:41:40.040
select a.book_award_number, a.book_award_name, a.book_award_image, c.book_award_dt
    from book_awards a 
    inner join book_awards_category b on b.book_award_number = a.book_award_number
    inner join book_awards_mapping c on c.book_awards_category_number = b.book_awards_category_number
    where ezine_preview_number =  ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 14998

get_book_by_id (Datasource=bookbrowse_com_new, Time=60ms, Records=1) in /root/website/queries/qry_get_book_by_id.cfm @ 06:41:40.040
SELECT		a.book_number, a.book_title, a.book_sub_title, a.book_url, a.book_entry_dt, a.book_short_summary, a.book_excerpt, a.book_jacket_info, a.book_reading_guide, a.book_copyright_info, a.book_notes,
            	b.author_number, b.author_first_name, b.author_last_name, b.author_middle_initial,
            	f.edition_publish_dt AS "hardcover_publish_dt", f.edition_number_of_pages AS "hardcover_number_of_pages", f.edition_isbn AS "hardcover_isbn", f.edition_isbn13 "hardcover_isbn13", f.edition_jacket_image as "hardcover_jacket_image", f.edition_publisher as "hardcover_publisher",
            	g.edition_publish_dt AS "paperback_publish_dt", g.edition_number_of_pages AS "paperback_number_of_pages", g.edition_isbn AS "paperback_isbn", g.edition_isbn13 "paperback_isbn13", g.edition_jacket_image as "paperback_jacket_image", g.edition_publisher as "paperback_publisher",
            	i.author_info_interview, i.author_info_biography,i.author_info_image,
            	CASE WHEN datalength(author_middle_initial) = 1 THEN author_first_name + ' ' + author_middle_initial + ' ' + author_last_name
            		 ELSE author_first_name + ' ' + author_last_name
            		 END "author_name",
            	CASE WHEN 
					(select count(*) from editions where book_number = 4364) = 1
					AND
					(select count(*) from editions where book_number = 4364 and edition_paperback_flag = 1) = 1
				THEN 1
				ELSE 0
				END AS "po_flag",
				(select count(*) from book_author_mapping m where m.author_number = b.author_number)
				+
				(select count(*) from ezine_previews where ezine_preview_bb_author_link = b.author_number and ezine_preview_bb_link =0)
				 as 'author_bookcount',
            	(SELECT CAST(AVG(CAST(rating AS decimal(12,0))) AS decimal(12,1))
				FROM (
					SELECT reader_review_rating AS rating
					FROM reader_reviews
					WHERE book_number = a.book_number
					AND reader_review_rating > 0
					
					UNION ALL
					
					SELECT reading_list_book_rating AS rating
					FROM reading_lists
					WHERE book_number = CAST(a.book_number AS VARCHAR)
					AND reading_list_book_rating > 0
				) combined_ratings
			) "savrating",
			(SELECT COUNT(rating)
				FROM (
					SELECT reader_review_rating AS rating
					FROM reader_reviews
					WHERE book_number = a.book_number
					AND reader_review_rating > 0
					
					UNION ALL
					
					SELECT reading_list_book_rating AS rating
					FROM reading_lists
					WHERE book_number = CAST(a.book_number AS VARCHAR)
					AND reading_list_book_rating > 0
				) combined_ratings
			) as "savrating_count",
            	(select top 1 media_review_rating from media_reviews where book_number = a.book_number and media_review_type_number = 9) as "bbrating",
            	(select cast(AVG(CAST(media_review_rating AS numeric(12,2)))AS decimal(12,1)) from media_reviews where book_number = a.book_number and media_review_type_number <> 7 and media_review_rating > 0) "scritrating",
				(SELECT COUNT(media_review_rating) FROM media_reviews WHERE book_number = a.book_number AND media_review_type_number <> 7 AND media_review_rating > 0) as "scritrating_count",
            	(select top 1 gg.ezine_number from ezine_edition_mapping aa, editions bb, books cc, ezines gg            	
            	where aa.edition_number = bb.edition_number and bb.book_number = cc.book_number and aa.ezine_number = gg.ezine_number 
            	and cc.book_number = a.book_number and gg.ezine_bbsays_flag = 1 and gg.ezine_active_flag = 1) as "ezine_number",
				cgm.category_number,
				cgya.category_number AS "ya_flag"
				
,(select top 1 publisher_holding_company from publishers where (publisher_imprint like f.edition_publisher OR publisher_imprint like g.edition_publisher) AND publisher_holding_company LIKE 'Harper%') AS "publisher_holding_company"		
        
    FROM		books a 
    INNER JOIN	book_author_mapping c ON c.book_number = a.book_number
    INNER JOIN	authors b ON b.author_number = c.author_number  
    INNER JOIN	author_info i ON i.author_number = b.author_number
    
    LEFT JOIN	editions f ON f.book_number = a.book_number AND f.edition_paperback_flag = 0
    LEFT JOIN	editions g ON g.book_number = a.book_number AND g.edition_paperback_flag = 1
    LEFT JOIN	category_book_mapping cgm on cgm.book_number = a.book_number AND cgm.category_number = 48
    LEFT JOIN	category_book_mapping cgya on cgya.book_number = a.book_number AND cgya.category_number = 40
          
    WHERE 		a.book_number = ?
         
    ORDER BY	c.book_author_mapping_number
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 4041

get_media_reviews_by_book_id (Datasource=bookbrowse_com_new, Time=374ms, Records=9) in /root/website/queries/qry_get_book_by_id.cfm @ 06:41:40.040
SELECT		a.media_review_number, 
				a.book_number, 
				a.media_review_type_number, 
				a.media_review_title, 
				a.media_review_rating, 
				a.media_review, 
				a.media_review_old,
	
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 (case when dbo.WordCount(c.ezine_review_2) > 0 then dbo.WordCount(c.ezine_review_2) + dbo.WordCount(c.ezine_extras) 
                                                                                    else dbo.WordCount(c.ezine_review) 
                                                                                    end)
                                                                from ezine_edition_mapping c
                                                                INNER JOIN editions d ON (d.edition_number = c.edition_number)
                                                                INNER JOIN ezines e ON e.ezine_number = c.ezine_number
                                                                WHERE d.book_number = ?
                                                                
                                                                ORDER BY e.ezine_number ASC)
	 			ELSE 0 
	 			END  "wordc",
				
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 reviewer_number
		 														 from ezine_edition_mapping c
		 														 INNER JOIN editions d ON (d.edition_number = c.edition_number)
																 INNER JOIN ezines e ON e.ezine_number = c.ezine_number
		 														 WHERE d.book_number = ?
		 														 AND e.ezine_bbsays_flag = 1
																 ORDER BY d.edition_publish_dt DESC)
	 			ELSE 1
				END "reviewer_number",
				
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 reviewer_first_name + ' ' + reviewer_last_name AS "reviewer_name"
		 														 from ezine_edition_mapping c
		 														 INNER JOIN editions d ON (d.edition_number = c.edition_number)
																 INNER JOIN ezines e ON e.ezine_number = c.ezine_number
																 INNER JOIN reviewers r on r.reviewer_number = c.reviewer_number
		 														 WHERE d.book_number = ?
		 														 AND e.ezine_bbsays_flag = 1
																 ORDER BY d.edition_publish_dt DESC)
	 			END "reviewer_name"
	
	FROM		media_reviews a, media_review_types b
	
	WHERE		a.book_number IN (select distinct c.book_number from categories a, category_book_mapping b, book_author_mapping c where a.category_number = b.category_number and a.category_active_flag = 1 and b.book_number = c.book_number)
	AND			a.book_number = ?
	AND			a.media_review_type_number = b.media_review_type_number
	
	ORDER BY	b.media_review_type_sort_order ASC, media_review_rating DESC, media_review_title ASC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 4041
Parameter #2(CF_SQL_INTEGER) = 4041
Parameter #3(CF_SQL_INTEGER) = 4041
Parameter #4(CF_SQL_INTEGER) = 4041

get_book_image (Datasource=bookbrowse_com_new, Time=15ms, Records=1) in /root/website/actions/udfs.cfm @ 06:41:40.040
select 	f.edition_publish_dt "hardcover_publish_dt", f.edition_jacket_image "hardcover_jacket_image", 
            g.edition_publish_dt "paperback_publish_dt", g.edition_jacket_image "paperback_jacket_image"
    
    from   	books a
	left join editions f on a.book_number = f.book_number and f.edition_paperback_flag = 0
	left join editions g on a.book_number = g.book_number and g.edition_paperback_flag = 1
                    
    where 	a.book_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 4041

get_coauthor (Datasource=bookbrowse_com_new, Time=19ms, Records=1) in /root/website/actions/udfs.cfm @ 06:41:40.040
select 		book_number, 
            			CASE	WHEN datalength(d.author_middle_initial) > 1 
				                THEN d.author_first_name + ' ' + d.author_middle_initial + ' ' + d.author_last_name
				                ELSE d.author_first_name + ' ' + d.author_last_name
                        END "author",
                        d.author_number
            from		book_author_mapping e
            inner join	authors d ON e.author_number = d.author_number
            where		e.book_number = ?
			order by	book_author_mapping_number ASC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 4041

get_book_by_id (Datasource=bookbrowse_com_new, Time=54ms, Records=1) in /root/website/queries/qry_get_book_by_id.cfm @ 06:41:40.040
SELECT		a.book_number, a.book_title, a.book_sub_title, a.book_url, a.book_entry_dt, a.book_short_summary, a.book_excerpt, a.book_jacket_info, a.book_reading_guide, a.book_copyright_info, a.book_notes,
            	b.author_number, b.author_first_name, b.author_last_name, b.author_middle_initial,
            	f.edition_publish_dt AS "hardcover_publish_dt", f.edition_number_of_pages AS "hardcover_number_of_pages", f.edition_isbn AS "hardcover_isbn", f.edition_isbn13 "hardcover_isbn13", f.edition_jacket_image as "hardcover_jacket_image", f.edition_publisher as "hardcover_publisher",
            	g.edition_publish_dt AS "paperback_publish_dt", g.edition_number_of_pages AS "paperback_number_of_pages", g.edition_isbn AS "paperback_isbn", g.edition_isbn13 "paperback_isbn13", g.edition_jacket_image as "paperback_jacket_image", g.edition_publisher as "paperback_publisher",
            	i.author_info_interview, i.author_info_biography,i.author_info_image,
            	CASE WHEN datalength(author_middle_initial) = 1 THEN author_first_name + ' ' + author_middle_initial + ' ' + author_last_name
            		 ELSE author_first_name + ' ' + author_last_name
            		 END "author_name",
            	CASE WHEN 
					(select count(*) from editions where book_number = 4364) = 1
					AND
					(select count(*) from editions where book_number = 4364 and edition_paperback_flag = 1) = 1
				THEN 1
				ELSE 0
				END AS "po_flag",
				(select count(*) from book_author_mapping m where m.author_number = b.author_number)
				+
				(select count(*) from ezine_previews where ezine_preview_bb_author_link = b.author_number and ezine_preview_bb_link =0)
				 as 'author_bookcount',
            	(SELECT CAST(AVG(CAST(rating AS decimal(12,0))) AS decimal(12,1))
				FROM (
					SELECT reader_review_rating AS rating
					FROM reader_reviews
					WHERE book_number = a.book_number
					AND reader_review_rating > 0
					
					UNION ALL
					
					SELECT reading_list_book_rating AS rating
					FROM reading_lists
					WHERE book_number = CAST(a.book_number AS VARCHAR)
					AND reading_list_book_rating > 0
				) combined_ratings
			) "savrating",
			(SELECT COUNT(rating)
				FROM (
					SELECT reader_review_rating AS rating
					FROM reader_reviews
					WHERE book_number = a.book_number
					AND reader_review_rating > 0
					
					UNION ALL
					
					SELECT reading_list_book_rating AS rating
					FROM reading_lists
					WHERE book_number = CAST(a.book_number AS VARCHAR)
					AND reading_list_book_rating > 0
				) combined_ratings
			) as "savrating_count",
            	(select top 1 media_review_rating from media_reviews where book_number = a.book_number and media_review_type_number = 9) as "bbrating",
            	(select cast(AVG(CAST(media_review_rating AS numeric(12,2)))AS decimal(12,1)) from media_reviews where book_number = a.book_number and media_review_type_number <> 7 and media_review_rating > 0) "scritrating",
				(SELECT COUNT(media_review_rating) FROM media_reviews WHERE book_number = a.book_number AND media_review_type_number <> 7 AND media_review_rating > 0) as "scritrating_count",
            	(select top 1 gg.ezine_number from ezine_edition_mapping aa, editions bb, books cc, ezines gg            	
            	where aa.edition_number = bb.edition_number and bb.book_number = cc.book_number and aa.ezine_number = gg.ezine_number 
            	and cc.book_number = a.book_number and gg.ezine_bbsays_flag = 1 and gg.ezine_active_flag = 1) as "ezine_number",
				cgm.category_number,
				cgya.category_number AS "ya_flag"
				
,(select top 1 publisher_holding_company from publishers where (publisher_imprint like f.edition_publisher OR publisher_imprint like g.edition_publisher) AND publisher_holding_company LIKE 'Harper%') AS "publisher_holding_company"		
        
    FROM		books a 
    INNER JOIN	book_author_mapping c ON c.book_number = a.book_number
    INNER JOIN	authors b ON b.author_number = c.author_number  
    INNER JOIN	author_info i ON i.author_number = b.author_number
    
    LEFT JOIN	editions f ON f.book_number = a.book_number AND f.edition_paperback_flag = 0
    LEFT JOIN	editions g ON g.book_number = a.book_number AND g.edition_paperback_flag = 1
    LEFT JOIN	category_book_mapping cgm on cgm.book_number = a.book_number AND cgm.category_number = 48
    LEFT JOIN	category_book_mapping cgya on cgya.book_number = a.book_number AND cgya.category_number = 40
          
    WHERE 		a.book_number = ?
         
    ORDER BY	c.book_author_mapping_number
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3979

get_media_reviews_by_book_id (Datasource=bookbrowse_com_new, Time=407ms, Records=8) in /root/website/queries/qry_get_book_by_id.cfm @ 06:41:41.041
SELECT		a.media_review_number, 
				a.book_number, 
				a.media_review_type_number, 
				a.media_review_title, 
				a.media_review_rating, 
				a.media_review, 
				a.media_review_old,
	
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 (case when dbo.WordCount(c.ezine_review_2) > 0 then dbo.WordCount(c.ezine_review_2) + dbo.WordCount(c.ezine_extras) 
                                                                                    else dbo.WordCount(c.ezine_review) 
                                                                                    end)
                                                                from ezine_edition_mapping c
                                                                INNER JOIN editions d ON (d.edition_number = c.edition_number)
                                                                INNER JOIN ezines e ON e.ezine_number = c.ezine_number
                                                                WHERE d.book_number = ?
                                                                
                                                                ORDER BY e.ezine_number ASC)
	 			ELSE 0 
	 			END  "wordc",
				
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 reviewer_number
		 														 from ezine_edition_mapping c
		 														 INNER JOIN editions d ON (d.edition_number = c.edition_number)
																 INNER JOIN ezines e ON e.ezine_number = c.ezine_number
		 														 WHERE d.book_number = ?
		 														 AND e.ezine_bbsays_flag = 1
																 ORDER BY d.edition_publish_dt DESC)
	 			ELSE 1
				END "reviewer_number",
				
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 reviewer_first_name + ' ' + reviewer_last_name AS "reviewer_name"
		 														 from ezine_edition_mapping c
		 														 INNER JOIN editions d ON (d.edition_number = c.edition_number)
																 INNER JOIN ezines e ON e.ezine_number = c.ezine_number
																 INNER JOIN reviewers r on r.reviewer_number = c.reviewer_number
		 														 WHERE d.book_number = ?
		 														 AND e.ezine_bbsays_flag = 1
																 ORDER BY d.edition_publish_dt DESC)
	 			END "reviewer_name"
	
	FROM		media_reviews a, media_review_types b
	
	WHERE		a.book_number IN (select distinct c.book_number from categories a, category_book_mapping b, book_author_mapping c where a.category_number = b.category_number and a.category_active_flag = 1 and b.book_number = c.book_number)
	AND			a.book_number = ?
	AND			a.media_review_type_number = b.media_review_type_number
	
	ORDER BY	b.media_review_type_sort_order ASC, media_review_rating DESC, media_review_title ASC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3979
Parameter #2(CF_SQL_INTEGER) = 3979
Parameter #3(CF_SQL_INTEGER) = 3979
Parameter #4(CF_SQL_INTEGER) = 3979

get_book_image (Datasource=bookbrowse_com_new, Time=20ms, Records=1) in /root/website/actions/udfs.cfm @ 06:41:41.041
select 	f.edition_publish_dt "hardcover_publish_dt", f.edition_jacket_image "hardcover_jacket_image", 
            g.edition_publish_dt "paperback_publish_dt", g.edition_jacket_image "paperback_jacket_image"
    
    from   	books a
	left join editions f on a.book_number = f.book_number and f.edition_paperback_flag = 0
	left join editions g on a.book_number = g.book_number and g.edition_paperback_flag = 1
                    
    where 	a.book_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3979

get_coauthor (Datasource=bookbrowse_com_new, Time=16ms, Records=1) in /root/website/actions/udfs.cfm @ 06:41:41.041
select 		book_number, 
            			CASE	WHEN datalength(d.author_middle_initial) > 1 
				                THEN d.author_first_name + ' ' + d.author_middle_initial + ' ' + d.author_last_name
				                ELSE d.author_first_name + ' ' + d.author_last_name
                        END "author",
                        d.author_number
            from		book_author_mapping e
            inner join	authors d ON e.author_number = d.author_number
            where		e.book_number = ?
			order by	book_author_mapping_number ASC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3979

get_book_by_id (Datasource=bookbrowse_com_new, Time=17ms, Records=1) in /root/website/queries/qry_get_book_by_id.cfm @ 06:41:41.041
SELECT		a.book_number, a.book_title, a.book_sub_title, a.book_url, a.book_entry_dt, a.book_short_summary, a.book_excerpt, a.book_jacket_info, a.book_reading_guide, a.book_copyright_info, a.book_notes,
            	b.author_number, b.author_first_name, b.author_last_name, b.author_middle_initial,
            	f.edition_publish_dt AS "hardcover_publish_dt", f.edition_number_of_pages AS "hardcover_number_of_pages", f.edition_isbn AS "hardcover_isbn", f.edition_isbn13 "hardcover_isbn13", f.edition_jacket_image as "hardcover_jacket_image", f.edition_publisher as "hardcover_publisher",
            	g.edition_publish_dt AS "paperback_publish_dt", g.edition_number_of_pages AS "paperback_number_of_pages", g.edition_isbn AS "paperback_isbn", g.edition_isbn13 "paperback_isbn13", g.edition_jacket_image as "paperback_jacket_image", g.edition_publisher as "paperback_publisher",
            	i.author_info_interview, i.author_info_biography,i.author_info_image,
            	CASE WHEN datalength(author_middle_initial) = 1 THEN author_first_name + ' ' + author_middle_initial + ' ' + author_last_name
            		 ELSE author_first_name + ' ' + author_last_name
            		 END "author_name",
            	CASE WHEN 
					(select count(*) from editions where book_number = 4364) = 1
					AND
					(select count(*) from editions where book_number = 4364 and edition_paperback_flag = 1) = 1
				THEN 1
				ELSE 0
				END AS "po_flag",
				(select count(*) from book_author_mapping m where m.author_number = b.author_number)
				+
				(select count(*) from ezine_previews where ezine_preview_bb_author_link = b.author_number and ezine_preview_bb_link =0)
				 as 'author_bookcount',
            	(SELECT CAST(AVG(CAST(rating AS decimal(12,0))) AS decimal(12,1))
				FROM (
					SELECT reader_review_rating AS rating
					FROM reader_reviews
					WHERE book_number = a.book_number
					AND reader_review_rating > 0
					
					UNION ALL
					
					SELECT reading_list_book_rating AS rating
					FROM reading_lists
					WHERE book_number = CAST(a.book_number AS VARCHAR)
					AND reading_list_book_rating > 0
				) combined_ratings
			) "savrating",
			(SELECT COUNT(rating)
				FROM (
					SELECT reader_review_rating AS rating
					FROM reader_reviews
					WHERE book_number = a.book_number
					AND reader_review_rating > 0
					
					UNION ALL
					
					SELECT reading_list_book_rating AS rating
					FROM reading_lists
					WHERE book_number = CAST(a.book_number AS VARCHAR)
					AND reading_list_book_rating > 0
				) combined_ratings
			) as "savrating_count",
            	(select top 1 media_review_rating from media_reviews where book_number = a.book_number and media_review_type_number = 9) as "bbrating",
            	(select cast(AVG(CAST(media_review_rating AS numeric(12,2)))AS decimal(12,1)) from media_reviews where book_number = a.book_number and media_review_type_number <> 7 and media_review_rating > 0) "scritrating",
				(SELECT COUNT(media_review_rating) FROM media_reviews WHERE book_number = a.book_number AND media_review_type_number <> 7 AND media_review_rating > 0) as "scritrating_count",
            	(select top 1 gg.ezine_number from ezine_edition_mapping aa, editions bb, books cc, ezines gg            	
            	where aa.edition_number = bb.edition_number and bb.book_number = cc.book_number and aa.ezine_number = gg.ezine_number 
            	and cc.book_number = a.book_number and gg.ezine_bbsays_flag = 1 and gg.ezine_active_flag = 1) as "ezine_number",
				cgm.category_number,
				cgya.category_number AS "ya_flag"
				
,(select top 1 publisher_holding_company from publishers where (publisher_imprint like f.edition_publisher OR publisher_imprint like g.edition_publisher) AND publisher_holding_company LIKE 'Harper%') AS "publisher_holding_company"		
        
    FROM		books a 
    INNER JOIN	book_author_mapping c ON c.book_number = a.book_number
    INNER JOIN	authors b ON b.author_number = c.author_number  
    INNER JOIN	author_info i ON i.author_number = b.author_number
    
    LEFT JOIN	editions f ON f.book_number = a.book_number AND f.edition_paperback_flag = 0
    LEFT JOIN	editions g ON g.book_number = a.book_number AND g.edition_paperback_flag = 1
    LEFT JOIN	category_book_mapping cgm on cgm.book_number = a.book_number AND cgm.category_number = 48
    LEFT JOIN	category_book_mapping cgya on cgya.book_number = a.book_number AND cgya.category_number = 40
          
    WHERE 		a.book_number = ?
         
    ORDER BY	c.book_author_mapping_number
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3771

get_media_reviews_by_book_id (Datasource=bookbrowse_com_new, Time=396ms, Records=5) in /root/website/queries/qry_get_book_by_id.cfm @ 06:41:41.041
SELECT		a.media_review_number, 
				a.book_number, 
				a.media_review_type_number, 
				a.media_review_title, 
				a.media_review_rating, 
				a.media_review, 
				a.media_review_old,
	
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 (case when dbo.WordCount(c.ezine_review_2) > 0 then dbo.WordCount(c.ezine_review_2) + dbo.WordCount(c.ezine_extras) 
                                                                                    else dbo.WordCount(c.ezine_review) 
                                                                                    end)
                                                                from ezine_edition_mapping c
                                                                INNER JOIN editions d ON (d.edition_number = c.edition_number)
                                                                INNER JOIN ezines e ON e.ezine_number = c.ezine_number
                                                                WHERE d.book_number = ?
                                                                
                                                                ORDER BY e.ezine_number ASC)
	 			ELSE 0 
	 			END  "wordc",
				
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 reviewer_number
		 														 from ezine_edition_mapping c
		 														 INNER JOIN editions d ON (d.edition_number = c.edition_number)
																 INNER JOIN ezines e ON e.ezine_number = c.ezine_number
		 														 WHERE d.book_number = ?
		 														 AND e.ezine_bbsays_flag = 1
																 ORDER BY d.edition_publish_dt DESC)
	 			ELSE 1
				END "reviewer_number",
				
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 reviewer_first_name + ' ' + reviewer_last_name AS "reviewer_name"
		 														 from ezine_edition_mapping c
		 														 INNER JOIN editions d ON (d.edition_number = c.edition_number)
																 INNER JOIN ezines e ON e.ezine_number = c.ezine_number
																 INNER JOIN reviewers r on r.reviewer_number = c.reviewer_number
		 														 WHERE d.book_number = ?
		 														 AND e.ezine_bbsays_flag = 1
																 ORDER BY d.edition_publish_dt DESC)
	 			END "reviewer_name"
	
	FROM		media_reviews a, media_review_types b
	
	WHERE		a.book_number IN (select distinct c.book_number from categories a, category_book_mapping b, book_author_mapping c where a.category_number = b.category_number and a.category_active_flag = 1 and b.book_number = c.book_number)
	AND			a.book_number = ?
	AND			a.media_review_type_number = b.media_review_type_number
	
	ORDER BY	b.media_review_type_sort_order ASC, media_review_rating DESC, media_review_title ASC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3771
Parameter #2(CF_SQL_INTEGER) = 3771
Parameter #3(CF_SQL_INTEGER) = 3771
Parameter #4(CF_SQL_INTEGER) = 3771

get_book_image (Datasource=bookbrowse_com_new, Time=11ms, Records=1) in /root/website/actions/udfs.cfm @ 06:41:41.041
select 	f.edition_publish_dt "hardcover_publish_dt", f.edition_jacket_image "hardcover_jacket_image", 
            g.edition_publish_dt "paperback_publish_dt", g.edition_jacket_image "paperback_jacket_image"
    
    from   	books a
	left join editions f on a.book_number = f.book_number and f.edition_paperback_flag = 0
	left join editions g on a.book_number = g.book_number and g.edition_paperback_flag = 1
                    
    where 	a.book_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3771

get_coauthor (Datasource=bookbrowse_com_new, Time=13ms, Records=1) in /root/website/actions/udfs.cfm @ 06:41:41.041
select 		book_number, 
            			CASE	WHEN datalength(d.author_middle_initial) > 1 
				                THEN d.author_first_name + ' ' + d.author_middle_initial + ' ' + d.author_last_name
				                ELSE d.author_first_name + ' ' + d.author_last_name
                        END "author",
                        d.author_number
            from		book_author_mapping e
            inner join	authors d ON e.author_number = d.author_number
            where		e.book_number = ?
			order by	book_author_mapping_number ASC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3771

get_book_by_id (Datasource=bookbrowse_com_new, Time=28ms, Records=1) in /root/website/queries/qry_get_book_by_id.cfm @ 06:41:41.041
SELECT		a.book_number, a.book_title, a.book_sub_title, a.book_url, a.book_entry_dt, a.book_short_summary, a.book_excerpt, a.book_jacket_info, a.book_reading_guide, a.book_copyright_info, a.book_notes,
            	b.author_number, b.author_first_name, b.author_last_name, b.author_middle_initial,
            	f.edition_publish_dt AS "hardcover_publish_dt", f.edition_number_of_pages AS "hardcover_number_of_pages", f.edition_isbn AS "hardcover_isbn", f.edition_isbn13 "hardcover_isbn13", f.edition_jacket_image as "hardcover_jacket_image", f.edition_publisher as "hardcover_publisher",
            	g.edition_publish_dt AS "paperback_publish_dt", g.edition_number_of_pages AS "paperback_number_of_pages", g.edition_isbn AS "paperback_isbn", g.edition_isbn13 "paperback_isbn13", g.edition_jacket_image as "paperback_jacket_image", g.edition_publisher as "paperback_publisher",
            	i.author_info_interview, i.author_info_biography,i.author_info_image,
            	CASE WHEN datalength(author_middle_initial) = 1 THEN author_first_name + ' ' + author_middle_initial + ' ' + author_last_name
            		 ELSE author_first_name + ' ' + author_last_name
            		 END "author_name",
            	CASE WHEN 
					(select count(*) from editions where book_number = 4364) = 1
					AND
					(select count(*) from editions where book_number = 4364 and edition_paperback_flag = 1) = 1
				THEN 1
				ELSE 0
				END AS "po_flag",
				(select count(*) from book_author_mapping m where m.author_number = b.author_number)
				+
				(select count(*) from ezine_previews where ezine_preview_bb_author_link = b.author_number and ezine_preview_bb_link =0)
				 as 'author_bookcount',
            	(SELECT CAST(AVG(CAST(rating AS decimal(12,0))) AS decimal(12,1))
				FROM (
					SELECT reader_review_rating AS rating
					FROM reader_reviews
					WHERE book_number = a.book_number
					AND reader_review_rating > 0
					
					UNION ALL
					
					SELECT reading_list_book_rating AS rating
					FROM reading_lists
					WHERE book_number = CAST(a.book_number AS VARCHAR)
					AND reading_list_book_rating > 0
				) combined_ratings
			) "savrating",
			(SELECT COUNT(rating)
				FROM (
					SELECT reader_review_rating AS rating
					FROM reader_reviews
					WHERE book_number = a.book_number
					AND reader_review_rating > 0
					
					UNION ALL
					
					SELECT reading_list_book_rating AS rating
					FROM reading_lists
					WHERE book_number = CAST(a.book_number AS VARCHAR)
					AND reading_list_book_rating > 0
				) combined_ratings
			) as "savrating_count",
            	(select top 1 media_review_rating from media_reviews where book_number = a.book_number and media_review_type_number = 9) as "bbrating",
            	(select cast(AVG(CAST(media_review_rating AS numeric(12,2)))AS decimal(12,1)) from media_reviews where book_number = a.book_number and media_review_type_number <> 7 and media_review_rating > 0) "scritrating",
				(SELECT COUNT(media_review_rating) FROM media_reviews WHERE book_number = a.book_number AND media_review_type_number <> 7 AND media_review_rating > 0) as "scritrating_count",
            	(select top 1 gg.ezine_number from ezine_edition_mapping aa, editions bb, books cc, ezines gg            	
            	where aa.edition_number = bb.edition_number and bb.book_number = cc.book_number and aa.ezine_number = gg.ezine_number 
            	and cc.book_number = a.book_number and gg.ezine_bbsays_flag = 1 and gg.ezine_active_flag = 1) as "ezine_number",
				cgm.category_number,
				cgya.category_number AS "ya_flag"
				
,(select top 1 publisher_holding_company from publishers where (publisher_imprint like f.edition_publisher OR publisher_imprint like g.edition_publisher) AND publisher_holding_company LIKE 'Harper%') AS "publisher_holding_company"		
        
    FROM		books a 
    INNER JOIN	book_author_mapping c ON c.book_number = a.book_number
    INNER JOIN	authors b ON b.author_number = c.author_number  
    INNER JOIN	author_info i ON i.author_number = b.author_number
    
    LEFT JOIN	editions f ON f.book_number = a.book_number AND f.edition_paperback_flag = 0
    LEFT JOIN	editions g ON g.book_number = a.book_number AND g.edition_paperback_flag = 1
    LEFT JOIN	category_book_mapping cgm on cgm.book_number = a.book_number AND cgm.category_number = 48
    LEFT JOIN	category_book_mapping cgya on cgya.book_number = a.book_number AND cgya.category_number = 40
          
    WHERE 		a.book_number = ?
         
    ORDER BY	c.book_author_mapping_number
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3507

get_media_reviews_by_book_id (Datasource=bookbrowse_com_new, Time=244ms, Records=7) in /root/website/queries/qry_get_book_by_id.cfm @ 06:41:41.041
SELECT		a.media_review_number, 
				a.book_number, 
				a.media_review_type_number, 
				a.media_review_title, 
				a.media_review_rating, 
				a.media_review, 
				a.media_review_old,
	
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 (case when dbo.WordCount(c.ezine_review_2) > 0 then dbo.WordCount(c.ezine_review_2) + dbo.WordCount(c.ezine_extras) 
                                                                                    else dbo.WordCount(c.ezine_review) 
                                                                                    end)
                                                                from ezine_edition_mapping c
                                                                INNER JOIN editions d ON (d.edition_number = c.edition_number)
                                                                INNER JOIN ezines e ON e.ezine_number = c.ezine_number
                                                                WHERE d.book_number = ?
                                                                
                                                                ORDER BY e.ezine_number ASC)
	 			ELSE 0 
	 			END  "wordc",
				
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 reviewer_number
		 														 from ezine_edition_mapping c
		 														 INNER JOIN editions d ON (d.edition_number = c.edition_number)
																 INNER JOIN ezines e ON e.ezine_number = c.ezine_number
		 														 WHERE d.book_number = ?
		 														 AND e.ezine_bbsays_flag = 1
																 ORDER BY d.edition_publish_dt DESC)
	 			ELSE 1
				END "reviewer_number",
				
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 reviewer_first_name + ' ' + reviewer_last_name AS "reviewer_name"
		 														 from ezine_edition_mapping c
		 														 INNER JOIN editions d ON (d.edition_number = c.edition_number)
																 INNER JOIN ezines e ON e.ezine_number = c.ezine_number
																 INNER JOIN reviewers r on r.reviewer_number = c.reviewer_number
		 														 WHERE d.book_number = ?
		 														 AND e.ezine_bbsays_flag = 1
																 ORDER BY d.edition_publish_dt DESC)
	 			END "reviewer_name"
	
	FROM		media_reviews a, media_review_types b
	
	WHERE		a.book_number IN (select distinct c.book_number from categories a, category_book_mapping b, book_author_mapping c where a.category_number = b.category_number and a.category_active_flag = 1 and b.book_number = c.book_number)
	AND			a.book_number = ?
	AND			a.media_review_type_number = b.media_review_type_number
	
	ORDER BY	b.media_review_type_sort_order ASC, media_review_rating DESC, media_review_title ASC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3507
Parameter #2(CF_SQL_INTEGER) = 3507
Parameter #3(CF_SQL_INTEGER) = 3507
Parameter #4(CF_SQL_INTEGER) = 3507

get_book_image (Datasource=bookbrowse_com_new, Time=17ms, Records=1) in /root/website/actions/udfs.cfm @ 06:41:41.041
select 	f.edition_publish_dt "hardcover_publish_dt", f.edition_jacket_image "hardcover_jacket_image", 
            g.edition_publish_dt "paperback_publish_dt", g.edition_jacket_image "paperback_jacket_image"
    
    from   	books a
	left join editions f on a.book_number = f.book_number and f.edition_paperback_flag = 0
	left join editions g on a.book_number = g.book_number and g.edition_paperback_flag = 1
                    
    where 	a.book_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3507

get_coauthor (Datasource=bookbrowse_com_new, Time=22ms, Records=1) in /root/website/actions/udfs.cfm @ 06:41:41.041
select 		book_number, 
            			CASE	WHEN datalength(d.author_middle_initial) > 1 
				                THEN d.author_first_name + ' ' + d.author_middle_initial + ' ' + d.author_last_name
				                ELSE d.author_first_name + ' ' + d.author_last_name
                        END "author",
                        d.author_number
            from		book_author_mapping e
            inner join	authors d ON e.author_number = d.author_number
            where		e.book_number = ?
			order by	book_author_mapping_number ASC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3507

get_book_by_id (Datasource=bookbrowse_com_new, Time=32ms, Records=1) in /root/website/queries/qry_get_book_by_id.cfm @ 06:41:41.041
SELECT		a.book_number, a.book_title, a.book_sub_title, a.book_url, a.book_entry_dt, a.book_short_summary, a.book_excerpt, a.book_jacket_info, a.book_reading_guide, a.book_copyright_info, a.book_notes,
            	b.author_number, b.author_first_name, b.author_last_name, b.author_middle_initial,
            	f.edition_publish_dt AS "hardcover_publish_dt", f.edition_number_of_pages AS "hardcover_number_of_pages", f.edition_isbn AS "hardcover_isbn", f.edition_isbn13 "hardcover_isbn13", f.edition_jacket_image as "hardcover_jacket_image", f.edition_publisher as "hardcover_publisher",
            	g.edition_publish_dt AS "paperback_publish_dt", g.edition_number_of_pages AS "paperback_number_of_pages", g.edition_isbn AS "paperback_isbn", g.edition_isbn13 "paperback_isbn13", g.edition_jacket_image as "paperback_jacket_image", g.edition_publisher as "paperback_publisher",
            	i.author_info_interview, i.author_info_biography,i.author_info_image,
            	CASE WHEN datalength(author_middle_initial) = 1 THEN author_first_name + ' ' + author_middle_initial + ' ' + author_last_name
            		 ELSE author_first_name + ' ' + author_last_name
            		 END "author_name",
            	CASE WHEN 
					(select count(*) from editions where book_number = 4364) = 1
					AND
					(select count(*) from editions where book_number = 4364 and edition_paperback_flag = 1) = 1
				THEN 1
				ELSE 0
				END AS "po_flag",
				(select count(*) from book_author_mapping m where m.author_number = b.author_number)
				+
				(select count(*) from ezine_previews where ezine_preview_bb_author_link = b.author_number and ezine_preview_bb_link =0)
				 as 'author_bookcount',
            	(SELECT CAST(AVG(CAST(rating AS decimal(12,0))) AS decimal(12,1))
				FROM (
					SELECT reader_review_rating AS rating
					FROM reader_reviews
					WHERE book_number = a.book_number
					AND reader_review_rating > 0
					
					UNION ALL
					
					SELECT reading_list_book_rating AS rating
					FROM reading_lists
					WHERE book_number = CAST(a.book_number AS VARCHAR)
					AND reading_list_book_rating > 0
				) combined_ratings
			) "savrating",
			(SELECT COUNT(rating)
				FROM (
					SELECT reader_review_rating AS rating
					FROM reader_reviews
					WHERE book_number = a.book_number
					AND reader_review_rating > 0
					
					UNION ALL
					
					SELECT reading_list_book_rating AS rating
					FROM reading_lists
					WHERE book_number = CAST(a.book_number AS VARCHAR)
					AND reading_list_book_rating > 0
				) combined_ratings
			) as "savrating_count",
            	(select top 1 media_review_rating from media_reviews where book_number = a.book_number and media_review_type_number = 9) as "bbrating",
            	(select cast(AVG(CAST(media_review_rating AS numeric(12,2)))AS decimal(12,1)) from media_reviews where book_number = a.book_number and media_review_type_number <> 7 and media_review_rating > 0) "scritrating",
				(SELECT COUNT(media_review_rating) FROM media_reviews WHERE book_number = a.book_number AND media_review_type_number <> 7 AND media_review_rating > 0) as "scritrating_count",
            	(select top 1 gg.ezine_number from ezine_edition_mapping aa, editions bb, books cc, ezines gg            	
            	where aa.edition_number = bb.edition_number and bb.book_number = cc.book_number and aa.ezine_number = gg.ezine_number 
            	and cc.book_number = a.book_number and gg.ezine_bbsays_flag = 1 and gg.ezine_active_flag = 1) as "ezine_number",
				cgm.category_number,
				cgya.category_number AS "ya_flag"
				
,(select top 1 publisher_holding_company from publishers where (publisher_imprint like f.edition_publisher OR publisher_imprint like g.edition_publisher) AND publisher_holding_company LIKE 'Harper%') AS "publisher_holding_company"		
        
    FROM		books a 
    INNER JOIN	book_author_mapping c ON c.book_number = a.book_number
    INNER JOIN	authors b ON b.author_number = c.author_number  
    INNER JOIN	author_info i ON i.author_number = b.author_number
    
    LEFT JOIN	editions f ON f.book_number = a.book_number AND f.edition_paperback_flag = 0
    LEFT JOIN	editions g ON g.book_number = a.book_number AND g.edition_paperback_flag = 1
    LEFT JOIN	category_book_mapping cgm on cgm.book_number = a.book_number AND cgm.category_number = 48
    LEFT JOIN	category_book_mapping cgya on cgya.book_number = a.book_number AND cgya.category_number = 40
          
    WHERE 		a.book_number = ?
         
    ORDER BY	c.book_author_mapping_number
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3701

get_media_reviews_by_book_id (Datasource=bookbrowse_com_new, Time=407ms, Records=8) in /root/website/queries/qry_get_book_by_id.cfm @ 06:41:42.042
SELECT		a.media_review_number, 
				a.book_number, 
				a.media_review_type_number, 
				a.media_review_title, 
				a.media_review_rating, 
				a.media_review, 
				a.media_review_old,
	
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 (case when dbo.WordCount(c.ezine_review_2) > 0 then dbo.WordCount(c.ezine_review_2) + dbo.WordCount(c.ezine_extras) 
                                                                                    else dbo.WordCount(c.ezine_review) 
                                                                                    end)
                                                                from ezine_edition_mapping c
                                                                INNER JOIN editions d ON (d.edition_number = c.edition_number)
                                                                INNER JOIN ezines e ON e.ezine_number = c.ezine_number
                                                                WHERE d.book_number = ?
                                                                
                                                                ORDER BY e.ezine_number ASC)
	 			ELSE 0 
	 			END  "wordc",
				
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 reviewer_number
		 														 from ezine_edition_mapping c
		 														 INNER JOIN editions d ON (d.edition_number = c.edition_number)
																 INNER JOIN ezines e ON e.ezine_number = c.ezine_number
		 														 WHERE d.book_number = ?
		 														 AND e.ezine_bbsays_flag = 1
																 ORDER BY d.edition_publish_dt DESC)
	 			ELSE 1
				END "reviewer_number",
				
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 reviewer_first_name + ' ' + reviewer_last_name AS "reviewer_name"
		 														 from ezine_edition_mapping c
		 														 INNER JOIN editions d ON (d.edition_number = c.edition_number)
																 INNER JOIN ezines e ON e.ezine_number = c.ezine_number
																 INNER JOIN reviewers r on r.reviewer_number = c.reviewer_number
		 														 WHERE d.book_number = ?
		 														 AND e.ezine_bbsays_flag = 1
																 ORDER BY d.edition_publish_dt DESC)
	 			END "reviewer_name"
	
	FROM		media_reviews a, media_review_types b
	
	WHERE		a.book_number IN (select distinct c.book_number from categories a, category_book_mapping b, book_author_mapping c where a.category_number = b.category_number and a.category_active_flag = 1 and b.book_number = c.book_number)
	AND			a.book_number = ?
	AND			a.media_review_type_number = b.media_review_type_number
	
	ORDER BY	b.media_review_type_sort_order ASC, media_review_rating DESC, media_review_title ASC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3701
Parameter #2(CF_SQL_INTEGER) = 3701
Parameter #3(CF_SQL_INTEGER) = 3701
Parameter #4(CF_SQL_INTEGER) = 3701

get_book_image (Datasource=bookbrowse_com_new, Time=47ms, Records=1) in /root/website/actions/udfs.cfm @ 06:41:42.042
select 	f.edition_publish_dt "hardcover_publish_dt", f.edition_jacket_image "hardcover_jacket_image", 
            g.edition_publish_dt "paperback_publish_dt", g.edition_jacket_image "paperback_jacket_image"
    
    from   	books a
	left join editions f on a.book_number = f.book_number and f.edition_paperback_flag = 0
	left join editions g on a.book_number = g.book_number and g.edition_paperback_flag = 1
                    
    where 	a.book_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3701

get_coauthor (Datasource=bookbrowse_com_new, Time=19ms, Records=1) in /root/website/actions/udfs.cfm @ 06:41:42.042
select 		book_number, 
            			CASE	WHEN datalength(d.author_middle_initial) > 1 
				                THEN d.author_first_name + ' ' + d.author_middle_initial + ' ' + d.author_last_name
				                ELSE d.author_first_name + ' ' + d.author_last_name
                        END "author",
                        d.author_number
            from		book_author_mapping e
            inner join	authors d ON e.author_number = d.author_number
            where		e.book_number = ?
			order by	book_author_mapping_number ASC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3701

get_preview_by_id (Datasource=bookbrowse_com_new, Time=28ms, Records=1) in /root/website/queries/qry_get_preview_by_id_for_search.cfm @ 06:41:42.042
SELECT 	ezine_preview_number,
            ezine_preview_title, 
            ezine_preview_subtitle, 
            ezine_preview_author, 
            ezine_preview_publisher,
            ezine_preview_publish_dt,
            ezine_preview_number_of_pages, 
            ezine_preview_short_summary,
            ezine_preview_jacket_image,
            ezine_preview_reviews,
            ezine_preview_jacket_desc,
			ezine_preview_reading_guide,
            ezine_preview_isbn,
            ezine_preview_isbn13,
            ezine_preview_rating,
            ezine_preview_bb_author_link
            				
    FROM 	ezine_previews
    WHERE 	ezine_preview_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 12577

get_author_name (Datasource=bookbrowse_com_new, Time=35ms, Records=1) in /root/website/queries/qry_get_preview_by_id_for_search.cfm @ 06:41:42.042
SELECT 	a.author_number, datalength(b.author_info_interview) as "interview",
		        CASE 	WHEN datalength(a.author_middle_initial) > 0 then a.author_first_name + ' ' + a.author_middle_initial + '. ' + a.author_last_name
		            	ELSE a.author_first_name + ' ' + a.author_last_name
		            	END "author_name"
        FROM 		authors a
        INNER JOIN 	author_info b on b.author_number = a.author_number 
        
        WHERE 		a.author_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 2438

get_preview_awards_by_id (Datasource=bookbrowse_com_new, Time=20ms, Records=0) in /root/website/queries/qry_get_preview_awards_by_id.cfm @ 06:41:42.042
select a.book_award_number, a.book_award_name, a.book_award_image, c.book_award_dt
    from book_awards a 
    inner join book_awards_category b on b.book_award_number = a.book_award_number
    inner join book_awards_mapping c on c.book_awards_category_number = b.book_awards_category_number
    where ezine_preview_number =  ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 12577

get_book_by_id (Datasource=bookbrowse_com_new, Time=107ms, Records=1) in /root/website/queries/qry_get_book_by_id.cfm @ 06:41:42.042
SELECT		a.book_number, a.book_title, a.book_sub_title, a.book_url, a.book_entry_dt, a.book_short_summary, a.book_excerpt, a.book_jacket_info, a.book_reading_guide, a.book_copyright_info, a.book_notes,
            	b.author_number, b.author_first_name, b.author_last_name, b.author_middle_initial,
            	f.edition_publish_dt AS "hardcover_publish_dt", f.edition_number_of_pages AS "hardcover_number_of_pages", f.edition_isbn AS "hardcover_isbn", f.edition_isbn13 "hardcover_isbn13", f.edition_jacket_image as "hardcover_jacket_image", f.edition_publisher as "hardcover_publisher",
            	g.edition_publish_dt AS "paperback_publish_dt", g.edition_number_of_pages AS "paperback_number_of_pages", g.edition_isbn AS "paperback_isbn", g.edition_isbn13 "paperback_isbn13", g.edition_jacket_image as "paperback_jacket_image", g.edition_publisher as "paperback_publisher",
            	i.author_info_interview, i.author_info_biography,i.author_info_image,
            	CASE WHEN datalength(author_middle_initial) = 1 THEN author_first_name + ' ' + author_middle_initial + ' ' + author_last_name
            		 ELSE author_first_name + ' ' + author_last_name
            		 END "author_name",
            	CASE WHEN 
					(select count(*) from editions where book_number = 4364) = 1
					AND
					(select count(*) from editions where book_number = 4364 and edition_paperback_flag = 1) = 1
				THEN 1
				ELSE 0
				END AS "po_flag",
				(select count(*) from book_author_mapping m where m.author_number = b.author_number)
				+
				(select count(*) from ezine_previews where ezine_preview_bb_author_link = b.author_number and ezine_preview_bb_link =0)
				 as 'author_bookcount',
            	(SELECT CAST(AVG(CAST(rating AS decimal(12,0))) AS decimal(12,1))
				FROM (
					SELECT reader_review_rating AS rating
					FROM reader_reviews
					WHERE book_number = a.book_number
					AND reader_review_rating > 0
					
					UNION ALL
					
					SELECT reading_list_book_rating AS rating
					FROM reading_lists
					WHERE book_number = CAST(a.book_number AS VARCHAR)
					AND reading_list_book_rating > 0
				) combined_ratings
			) "savrating",
			(SELECT COUNT(rating)
				FROM (
					SELECT reader_review_rating AS rating
					FROM reader_reviews
					WHERE book_number = a.book_number
					AND reader_review_rating > 0
					
					UNION ALL
					
					SELECT reading_list_book_rating AS rating
					FROM reading_lists
					WHERE book_number = CAST(a.book_number AS VARCHAR)
					AND reading_list_book_rating > 0
				) combined_ratings
			) as "savrating_count",
            	(select top 1 media_review_rating from media_reviews where book_number = a.book_number and media_review_type_number = 9) as "bbrating",
            	(select cast(AVG(CAST(media_review_rating AS numeric(12,2)))AS decimal(12,1)) from media_reviews where book_number = a.book_number and media_review_type_number <> 7 and media_review_rating > 0) "scritrating",
				(SELECT COUNT(media_review_rating) FROM media_reviews WHERE book_number = a.book_number AND media_review_type_number <> 7 AND media_review_rating > 0) as "scritrating_count",
            	(select top 1 gg.ezine_number from ezine_edition_mapping aa, editions bb, books cc, ezines gg            	
            	where aa.edition_number = bb.edition_number and bb.book_number = cc.book_number and aa.ezine_number = gg.ezine_number 
            	and cc.book_number = a.book_number and gg.ezine_bbsays_flag = 1 and gg.ezine_active_flag = 1) as "ezine_number",
				cgm.category_number,
				cgya.category_number AS "ya_flag"
				
,(select top 1 publisher_holding_company from publishers where (publisher_imprint like f.edition_publisher OR publisher_imprint like g.edition_publisher) AND publisher_holding_company LIKE 'Harper%') AS "publisher_holding_company"		
        
    FROM		books a 
    INNER JOIN	book_author_mapping c ON c.book_number = a.book_number
    INNER JOIN	authors b ON b.author_number = c.author_number  
    INNER JOIN	author_info i ON i.author_number = b.author_number
    
    LEFT JOIN	editions f ON f.book_number = a.book_number AND f.edition_paperback_flag = 0
    LEFT JOIN	editions g ON g.book_number = a.book_number AND g.edition_paperback_flag = 1
    LEFT JOIN	category_book_mapping cgm on cgm.book_number = a.book_number AND cgm.category_number = 48
    LEFT JOIN	category_book_mapping cgya on cgya.book_number = a.book_number AND cgya.category_number = 40
          
    WHERE 		a.book_number = ?
         
    ORDER BY	c.book_author_mapping_number
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3610

get_media_reviews_by_book_id (Datasource=bookbrowse_com_new, Time=509ms, Records=10) in /root/website/queries/qry_get_book_by_id.cfm @ 06:41:43.043
SELECT		a.media_review_number, 
				a.book_number, 
				a.media_review_type_number, 
				a.media_review_title, 
				a.media_review_rating, 
				a.media_review, 
				a.media_review_old,
	
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 (case when dbo.WordCount(c.ezine_review_2) > 0 then dbo.WordCount(c.ezine_review_2) + dbo.WordCount(c.ezine_extras) 
                                                                                    else dbo.WordCount(c.ezine_review) 
                                                                                    end)
                                                                from ezine_edition_mapping c
                                                                INNER JOIN editions d ON (d.edition_number = c.edition_number)
                                                                INNER JOIN ezines e ON e.ezine_number = c.ezine_number
                                                                WHERE d.book_number = ?
                                                                
                                                                ORDER BY e.ezine_number ASC)
	 			ELSE 0 
	 			END  "wordc",
				
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 reviewer_number
		 														 from ezine_edition_mapping c
		 														 INNER JOIN editions d ON (d.edition_number = c.edition_number)
																 INNER JOIN ezines e ON e.ezine_number = c.ezine_number
		 														 WHERE d.book_number = ?
		 														 AND e.ezine_bbsays_flag = 1
																 ORDER BY d.edition_publish_dt DESC)
	 			ELSE 1
				END "reviewer_number",
				
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 reviewer_first_name + ' ' + reviewer_last_name AS "reviewer_name"
		 														 from ezine_edition_mapping c
		 														 INNER JOIN editions d ON (d.edition_number = c.edition_number)
																 INNER JOIN ezines e ON e.ezine_number = c.ezine_number
																 INNER JOIN reviewers r on r.reviewer_number = c.reviewer_number
		 														 WHERE d.book_number = ?
		 														 AND e.ezine_bbsays_flag = 1
																 ORDER BY d.edition_publish_dt DESC)
	 			END "reviewer_name"
	
	FROM		media_reviews a, media_review_types b
	
	WHERE		a.book_number IN (select distinct c.book_number from categories a, category_book_mapping b, book_author_mapping c where a.category_number = b.category_number and a.category_active_flag = 1 and b.book_number = c.book_number)
	AND			a.book_number = ?
	AND			a.media_review_type_number = b.media_review_type_number
	
	ORDER BY	b.media_review_type_sort_order ASC, media_review_rating DESC, media_review_title ASC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3610
Parameter #2(CF_SQL_INTEGER) = 3610
Parameter #3(CF_SQL_INTEGER) = 3610
Parameter #4(CF_SQL_INTEGER) = 3610

get_book_image (Datasource=bookbrowse_com_new, Time=24ms, Records=1) in /root/website/actions/udfs.cfm @ 06:41:43.043
select 	f.edition_publish_dt "hardcover_publish_dt", f.edition_jacket_image "hardcover_jacket_image", 
            g.edition_publish_dt "paperback_publish_dt", g.edition_jacket_image "paperback_jacket_image"
    
    from   	books a
	left join editions f on a.book_number = f.book_number and f.edition_paperback_flag = 0
	left join editions g on a.book_number = g.book_number and g.edition_paperback_flag = 1
                    
    where 	a.book_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3610

get_coauthor (Datasource=bookbrowse_com_new, Time=15ms, Records=1) in /root/website/actions/udfs.cfm @ 06:41:43.043
select 		book_number, 
            			CASE	WHEN datalength(d.author_middle_initial) > 1 
				                THEN d.author_first_name + ' ' + d.author_middle_initial + ' ' + d.author_last_name
				                ELSE d.author_first_name + ' ' + d.author_last_name
                        END "author",
                        d.author_number
            from		book_author_mapping e
            inner join	authors d ON e.author_number = d.author_number
            where		e.book_number = ?
			order by	book_author_mapping_number ASC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3610

get_book_by_id (Datasource=bookbrowse_com_new, Time=31ms, Records=1) in /root/website/queries/qry_get_book_by_id.cfm @ 06:41:43.043
SELECT		a.book_number, a.book_title, a.book_sub_title, a.book_url, a.book_entry_dt, a.book_short_summary, a.book_excerpt, a.book_jacket_info, a.book_reading_guide, a.book_copyright_info, a.book_notes,
            	b.author_number, b.author_first_name, b.author_last_name, b.author_middle_initial,
            	f.edition_publish_dt AS "hardcover_publish_dt", f.edition_number_of_pages AS "hardcover_number_of_pages", f.edition_isbn AS "hardcover_isbn", f.edition_isbn13 "hardcover_isbn13", f.edition_jacket_image as "hardcover_jacket_image", f.edition_publisher as "hardcover_publisher",
            	g.edition_publish_dt AS "paperback_publish_dt", g.edition_number_of_pages AS "paperback_number_of_pages", g.edition_isbn AS "paperback_isbn", g.edition_isbn13 "paperback_isbn13", g.edition_jacket_image as "paperback_jacket_image", g.edition_publisher as "paperback_publisher",
            	i.author_info_interview, i.author_info_biography,i.author_info_image,
            	CASE WHEN datalength(author_middle_initial) = 1 THEN author_first_name + ' ' + author_middle_initial + ' ' + author_last_name
            		 ELSE author_first_name + ' ' + author_last_name
            		 END "author_name",
            	CASE WHEN 
					(select count(*) from editions where book_number = 4364) = 1
					AND
					(select count(*) from editions where book_number = 4364 and edition_paperback_flag = 1) = 1
				THEN 1
				ELSE 0
				END AS "po_flag",
				(select count(*) from book_author_mapping m where m.author_number = b.author_number)
				+
				(select count(*) from ezine_previews where ezine_preview_bb_author_link = b.author_number and ezine_preview_bb_link =0)
				 as 'author_bookcount',
            	(SELECT CAST(AVG(CAST(rating AS decimal(12,0))) AS decimal(12,1))
				FROM (
					SELECT reader_review_rating AS rating
					FROM reader_reviews
					WHERE book_number = a.book_number
					AND reader_review_rating > 0
					
					UNION ALL
					
					SELECT reading_list_book_rating AS rating
					FROM reading_lists
					WHERE book_number = CAST(a.book_number AS VARCHAR)
					AND reading_list_book_rating > 0
				) combined_ratings
			) "savrating",
			(SELECT COUNT(rating)
				FROM (
					SELECT reader_review_rating AS rating
					FROM reader_reviews
					WHERE book_number = a.book_number
					AND reader_review_rating > 0
					
					UNION ALL
					
					SELECT reading_list_book_rating AS rating
					FROM reading_lists
					WHERE book_number = CAST(a.book_number AS VARCHAR)
					AND reading_list_book_rating > 0
				) combined_ratings
			) as "savrating_count",
            	(select top 1 media_review_rating from media_reviews where book_number = a.book_number and media_review_type_number = 9) as "bbrating",
            	(select cast(AVG(CAST(media_review_rating AS numeric(12,2)))AS decimal(12,1)) from media_reviews where book_number = a.book_number and media_review_type_number <> 7 and media_review_rating > 0) "scritrating",
				(SELECT COUNT(media_review_rating) FROM media_reviews WHERE book_number = a.book_number AND media_review_type_number <> 7 AND media_review_rating > 0) as "scritrating_count",
            	(select top 1 gg.ezine_number from ezine_edition_mapping aa, editions bb, books cc, ezines gg            	
            	where aa.edition_number = bb.edition_number and bb.book_number = cc.book_number and aa.ezine_number = gg.ezine_number 
            	and cc.book_number = a.book_number and gg.ezine_bbsays_flag = 1 and gg.ezine_active_flag = 1) as "ezine_number",
				cgm.category_number,
				cgya.category_number AS "ya_flag"
				
,(select top 1 publisher_holding_company from publishers where (publisher_imprint like f.edition_publisher OR publisher_imprint like g.edition_publisher) AND publisher_holding_company LIKE 'Harper%') AS "publisher_holding_company"		
        
    FROM		books a 
    INNER JOIN	book_author_mapping c ON c.book_number = a.book_number
    INNER JOIN	authors b ON b.author_number = c.author_number  
    INNER JOIN	author_info i ON i.author_number = b.author_number
    
    LEFT JOIN	editions f ON f.book_number = a.book_number AND f.edition_paperback_flag = 0
    LEFT JOIN	editions g ON g.book_number = a.book_number AND g.edition_paperback_flag = 1
    LEFT JOIN	category_book_mapping cgm on cgm.book_number = a.book_number AND cgm.category_number = 48
    LEFT JOIN	category_book_mapping cgya on cgya.book_number = a.book_number AND cgya.category_number = 40
          
    WHERE 		a.book_number = ?
         
    ORDER BY	c.book_author_mapping_number
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3398

get_media_reviews_by_book_id (Datasource=bookbrowse_com_new, Time=498ms, Records=6) in /root/website/queries/qry_get_book_by_id.cfm @ 06:41:43.043
SELECT		a.media_review_number, 
				a.book_number, 
				a.media_review_type_number, 
				a.media_review_title, 
				a.media_review_rating, 
				a.media_review, 
				a.media_review_old,
	
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 (case when dbo.WordCount(c.ezine_review_2) > 0 then dbo.WordCount(c.ezine_review_2) + dbo.WordCount(c.ezine_extras) 
                                                                                    else dbo.WordCount(c.ezine_review) 
                                                                                    end)
                                                                from ezine_edition_mapping c
                                                                INNER JOIN editions d ON (d.edition_number = c.edition_number)
                                                                INNER JOIN ezines e ON e.ezine_number = c.ezine_number
                                                                WHERE d.book_number = ?
                                                                
                                                                ORDER BY e.ezine_number ASC)
	 			ELSE 0 
	 			END  "wordc",
				
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 reviewer_number
		 														 from ezine_edition_mapping c
		 														 INNER JOIN editions d ON (d.edition_number = c.edition_number)
																 INNER JOIN ezines e ON e.ezine_number = c.ezine_number
		 														 WHERE d.book_number = ?
		 														 AND e.ezine_bbsays_flag = 1
																 ORDER BY d.edition_publish_dt DESC)
	 			ELSE 1
				END "reviewer_number",
				
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 reviewer_first_name + ' ' + reviewer_last_name AS "reviewer_name"
		 														 from ezine_edition_mapping c
		 														 INNER JOIN editions d ON (d.edition_number = c.edition_number)
																 INNER JOIN ezines e ON e.ezine_number = c.ezine_number
																 INNER JOIN reviewers r on r.reviewer_number = c.reviewer_number
		 														 WHERE d.book_number = ?
		 														 AND e.ezine_bbsays_flag = 1
																 ORDER BY d.edition_publish_dt DESC)
	 			END "reviewer_name"
	
	FROM		media_reviews a, media_review_types b
	
	WHERE		a.book_number IN (select distinct c.book_number from categories a, category_book_mapping b, book_author_mapping c where a.category_number = b.category_number and a.category_active_flag = 1 and b.book_number = c.book_number)
	AND			a.book_number = ?
	AND			a.media_review_type_number = b.media_review_type_number
	
	ORDER BY	b.media_review_type_sort_order ASC, media_review_rating DESC, media_review_title ASC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3398
Parameter #2(CF_SQL_INTEGER) = 3398
Parameter #3(CF_SQL_INTEGER) = 3398
Parameter #4(CF_SQL_INTEGER) = 3398

get_book_image (Datasource=bookbrowse_com_new, Time=23ms, Records=1) in /root/website/actions/udfs.cfm @ 06:41:43.043
select 	f.edition_publish_dt "hardcover_publish_dt", f.edition_jacket_image "hardcover_jacket_image", 
            g.edition_publish_dt "paperback_publish_dt", g.edition_jacket_image "paperback_jacket_image"
    
    from   	books a
	left join editions f on a.book_number = f.book_number and f.edition_paperback_flag = 0
	left join editions g on a.book_number = g.book_number and g.edition_paperback_flag = 1
                    
    where 	a.book_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3398

get_coauthor (Datasource=bookbrowse_com_new, Time=18ms, Records=1) in /root/website/actions/udfs.cfm @ 06:41:43.043
select 		book_number, 
            			CASE	WHEN datalength(d.author_middle_initial) > 1 
				                THEN d.author_first_name + ' ' + d.author_middle_initial + ' ' + d.author_last_name
				                ELSE d.author_first_name + ' ' + d.author_last_name
                        END "author",
                        d.author_number
            from		book_author_mapping e
            inner join	authors d ON e.author_number = d.author_number
            where		e.book_number = ?
			order by	book_author_mapping_number ASC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3398

get_preview_by_id (Datasource=bookbrowse_com_new, Time=18ms, Records=1) in /root/website/queries/qry_get_preview_by_id_for_search.cfm @ 06:41:43.043
SELECT 	ezine_preview_number,
            ezine_preview_title, 
            ezine_preview_subtitle, 
            ezine_preview_author, 
            ezine_preview_publisher,
            ezine_preview_publish_dt,
            ezine_preview_number_of_pages, 
            ezine_preview_short_summary,
            ezine_preview_jacket_image,
            ezine_preview_reviews,
            ezine_preview_jacket_desc,
			ezine_preview_reading_guide,
            ezine_preview_isbn,
            ezine_preview_isbn13,
            ezine_preview_rating,
            ezine_preview_bb_author_link
            				
    FROM 	ezine_previews
    WHERE 	ezine_preview_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 11201

get_author_name (Datasource=bookbrowse_com_new, Time=23ms, Records=1) in /root/website/queries/qry_get_preview_by_id_for_search.cfm @ 06:41:43.043
SELECT 	a.author_number, datalength(b.author_info_interview) as "interview",
		        CASE 	WHEN datalength(a.author_middle_initial) > 0 then a.author_first_name + ' ' + a.author_middle_initial + '. ' + a.author_last_name
		            	ELSE a.author_first_name + ' ' + a.author_last_name
		            	END "author_name"
        FROM 		authors a
        INNER JOIN 	author_info b on b.author_number = a.author_number 
        
        WHERE 		a.author_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3901

get_preview_awards_by_id (Datasource=bookbrowse_com_new, Time=25ms, Records=0) in /root/website/queries/qry_get_preview_awards_by_id.cfm @ 06:41:43.043
select a.book_award_number, a.book_award_name, a.book_award_image, c.book_award_dt
    from book_awards a 
    inner join book_awards_category b on b.book_award_number = a.book_award_number
    inner join book_awards_mapping c on c.book_awards_category_number = b.book_awards_category_number
    where ezine_preview_number =  ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 11201

get_preview_by_id (Datasource=bookbrowse_com_new, Time=26ms, Records=1) in /root/website/queries/qry_get_preview_by_id_for_search.cfm @ 06:41:43.043
SELECT 	ezine_preview_number,
            ezine_preview_title, 
            ezine_preview_subtitle, 
            ezine_preview_author, 
            ezine_preview_publisher,
            ezine_preview_publish_dt,
            ezine_preview_number_of_pages, 
            ezine_preview_short_summary,
            ezine_preview_jacket_image,
            ezine_preview_reviews,
            ezine_preview_jacket_desc,
			ezine_preview_reading_guide,
            ezine_preview_isbn,
            ezine_preview_isbn13,
            ezine_preview_rating,
            ezine_preview_bb_author_link
            				
    FROM 	ezine_previews
    WHERE 	ezine_preview_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 11343

get_author_name (Datasource=bookbrowse_com_new, Time=25ms, Records=1) in /root/website/queries/qry_get_preview_by_id_for_search.cfm @ 06:41:43.043
SELECT 	a.author_number, datalength(b.author_info_interview) as "interview",
		        CASE 	WHEN datalength(a.author_middle_initial) > 0 then a.author_first_name + ' ' + a.author_middle_initial + '. ' + a.author_last_name
		            	ELSE a.author_first_name + ' ' + a.author_last_name
		            	END "author_name"
        FROM 		authors a
        INNER JOIN 	author_info b on b.author_number = a.author_number 
        
        WHERE 		a.author_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 2498

get_preview_awards_by_id (Datasource=bookbrowse_com_new, Time=31ms, Records=0) in /root/website/queries/qry_get_preview_awards_by_id.cfm @ 06:41:43.043
select a.book_award_number, a.book_award_name, a.book_award_image, c.book_award_dt
    from book_awards a 
    inner join book_awards_category b on b.book_award_number = a.book_award_number
    inner join book_awards_mapping c on c.book_awards_category_number = b.book_awards_category_number
    where ezine_preview_number =  ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 11343

get_preview_by_id (Datasource=bookbrowse_com_new, Time=25ms, Records=1) in /root/website/queries/qry_get_preview_by_id_for_search.cfm @ 06:41:43.043
SELECT 	ezine_preview_number,
            ezine_preview_title, 
            ezine_preview_subtitle, 
            ezine_preview_author, 
            ezine_preview_publisher,
            ezine_preview_publish_dt,
            ezine_preview_number_of_pages, 
            ezine_preview_short_summary,
            ezine_preview_jacket_image,
            ezine_preview_reviews,
            ezine_preview_jacket_desc,
			ezine_preview_reading_guide,
            ezine_preview_isbn,
            ezine_preview_isbn13,
            ezine_preview_rating,
            ezine_preview_bb_author_link
            				
    FROM 	ezine_previews
    WHERE 	ezine_preview_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 11447

get_author_name (Datasource=bookbrowse_com_new, Time=30ms, Records=1) in /root/website/queries/qry_get_preview_by_id_for_search.cfm @ 06:41:43.043
SELECT 	a.author_number, datalength(b.author_info_interview) as "interview",
		        CASE 	WHEN datalength(a.author_middle_initial) > 0 then a.author_first_name + ' ' + a.author_middle_initial + '. ' + a.author_last_name
		            	ELSE a.author_first_name + ' ' + a.author_last_name
		            	END "author_name"
        FROM 		authors a
        INNER JOIN 	author_info b on b.author_number = a.author_number 
        
        WHERE 		a.author_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 2098

get_preview_awards_by_id (Datasource=bookbrowse_com_new, Time=26ms, Records=0) in /root/website/queries/qry_get_preview_awards_by_id.cfm @ 06:41:43.043
select a.book_award_number, a.book_award_name, a.book_award_image, c.book_award_dt
    from book_awards a 
    inner join book_awards_category b on b.book_award_number = a.book_award_number
    inner join book_awards_mapping c on c.book_awards_category_number = b.book_awards_category_number
    where ezine_preview_number =  ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 11447

get_book_by_id (Datasource=bookbrowse_com_new, Time=51ms, Records=1) in /root/website/queries/qry_get_book_by_id.cfm @ 06:41:43.043
SELECT		a.book_number, a.book_title, a.book_sub_title, a.book_url, a.book_entry_dt, a.book_short_summary, a.book_excerpt, a.book_jacket_info, a.book_reading_guide, a.book_copyright_info, a.book_notes,
            	b.author_number, b.author_first_name, b.author_last_name, b.author_middle_initial,
            	f.edition_publish_dt AS "hardcover_publish_dt", f.edition_number_of_pages AS "hardcover_number_of_pages", f.edition_isbn AS "hardcover_isbn", f.edition_isbn13 "hardcover_isbn13", f.edition_jacket_image as "hardcover_jacket_image", f.edition_publisher as "hardcover_publisher",
            	g.edition_publish_dt AS "paperback_publish_dt", g.edition_number_of_pages AS "paperback_number_of_pages", g.edition_isbn AS "paperback_isbn", g.edition_isbn13 "paperback_isbn13", g.edition_jacket_image as "paperback_jacket_image", g.edition_publisher as "paperback_publisher",
            	i.author_info_interview, i.author_info_biography,i.author_info_image,
            	CASE WHEN datalength(author_middle_initial) = 1 THEN author_first_name + ' ' + author_middle_initial + ' ' + author_last_name
            		 ELSE author_first_name + ' ' + author_last_name
            		 END "author_name",
            	CASE WHEN 
					(select count(*) from editions where book_number = 4364) = 1
					AND
					(select count(*) from editions where book_number = 4364 and edition_paperback_flag = 1) = 1
				THEN 1
				ELSE 0
				END AS "po_flag",
				(select count(*) from book_author_mapping m where m.author_number = b.author_number)
				+
				(select count(*) from ezine_previews where ezine_preview_bb_author_link = b.author_number and ezine_preview_bb_link =0)
				 as 'author_bookcount',
            	(SELECT CAST(AVG(CAST(rating AS decimal(12,0))) AS decimal(12,1))
				FROM (
					SELECT reader_review_rating AS rating
					FROM reader_reviews
					WHERE book_number = a.book_number
					AND reader_review_rating > 0
					
					UNION ALL
					
					SELECT reading_list_book_rating AS rating
					FROM reading_lists
					WHERE book_number = CAST(a.book_number AS VARCHAR)
					AND reading_list_book_rating > 0
				) combined_ratings
			) "savrating",
			(SELECT COUNT(rating)
				FROM (
					SELECT reader_review_rating AS rating
					FROM reader_reviews
					WHERE book_number = a.book_number
					AND reader_review_rating > 0
					
					UNION ALL
					
					SELECT reading_list_book_rating AS rating
					FROM reading_lists
					WHERE book_number = CAST(a.book_number AS VARCHAR)
					AND reading_list_book_rating > 0
				) combined_ratings
			) as "savrating_count",
            	(select top 1 media_review_rating from media_reviews where book_number = a.book_number and media_review_type_number = 9) as "bbrating",
            	(select cast(AVG(CAST(media_review_rating AS numeric(12,2)))AS decimal(12,1)) from media_reviews where book_number = a.book_number and media_review_type_number <> 7 and media_review_rating > 0) "scritrating",
				(SELECT COUNT(media_review_rating) FROM media_reviews WHERE book_number = a.book_number AND media_review_type_number <> 7 AND media_review_rating > 0) as "scritrating_count",
            	(select top 1 gg.ezine_number from ezine_edition_mapping aa, editions bb, books cc, ezines gg            	
            	where aa.edition_number = bb.edition_number and bb.book_number = cc.book_number and aa.ezine_number = gg.ezine_number 
            	and cc.book_number = a.book_number and gg.ezine_bbsays_flag = 1 and gg.ezine_active_flag = 1) as "ezine_number",
				cgm.category_number,
				cgya.category_number AS "ya_flag"
				
,(select top 1 publisher_holding_company from publishers where (publisher_imprint like f.edition_publisher OR publisher_imprint like g.edition_publisher) AND publisher_holding_company LIKE 'Harper%') AS "publisher_holding_company"		
        
    FROM		books a 
    INNER JOIN	book_author_mapping c ON c.book_number = a.book_number
    INNER JOIN	authors b ON b.author_number = c.author_number  
    INNER JOIN	author_info i ON i.author_number = b.author_number
    
    LEFT JOIN	editions f ON f.book_number = a.book_number AND f.edition_paperback_flag = 0
    LEFT JOIN	editions g ON g.book_number = a.book_number AND g.edition_paperback_flag = 1
    LEFT JOIN	category_book_mapping cgm on cgm.book_number = a.book_number AND cgm.category_number = 48
    LEFT JOIN	category_book_mapping cgya on cgya.book_number = a.book_number AND cgya.category_number = 40
          
    WHERE 		a.book_number = ?
         
    ORDER BY	c.book_author_mapping_number
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3063

get_media_reviews_by_book_id (Datasource=bookbrowse_com_new, Time=596ms, Records=8) in /root/website/queries/qry_get_book_by_id.cfm @ 06:41:44.044
SELECT		a.media_review_number, 
				a.book_number, 
				a.media_review_type_number, 
				a.media_review_title, 
				a.media_review_rating, 
				a.media_review, 
				a.media_review_old,
	
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 (case when dbo.WordCount(c.ezine_review_2) > 0 then dbo.WordCount(c.ezine_review_2) + dbo.WordCount(c.ezine_extras) 
                                                                                    else dbo.WordCount(c.ezine_review) 
                                                                                    end)
                                                                from ezine_edition_mapping c
                                                                INNER JOIN editions d ON (d.edition_number = c.edition_number)
                                                                INNER JOIN ezines e ON e.ezine_number = c.ezine_number
                                                                WHERE d.book_number = ?
                                                                
                                                                ORDER BY e.ezine_number ASC)
	 			ELSE 0 
	 			END  "wordc",
				
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 reviewer_number
		 														 from ezine_edition_mapping c
		 														 INNER JOIN editions d ON (d.edition_number = c.edition_number)
																 INNER JOIN ezines e ON e.ezine_number = c.ezine_number
		 														 WHERE d.book_number = ?
		 														 AND e.ezine_bbsays_flag = 1
																 ORDER BY d.edition_publish_dt DESC)
	 			ELSE 1
				END "reviewer_number",
				
				CASE WHEN a.media_review_type_number = 9 THEN 	(select top 1 reviewer_first_name + ' ' + reviewer_last_name AS "reviewer_name"
		 														 from ezine_edition_mapping c
		 														 INNER JOIN editions d ON (d.edition_number = c.edition_number)
																 INNER JOIN ezines e ON e.ezine_number = c.ezine_number
																 INNER JOIN reviewers r on r.reviewer_number = c.reviewer_number
		 														 WHERE d.book_number = ?
		 														 AND e.ezine_bbsays_flag = 1
																 ORDER BY d.edition_publish_dt DESC)
	 			END "reviewer_name"
	
	FROM		media_reviews a, media_review_types b
	
	WHERE		a.book_number IN (select distinct c.book_number from categories a, category_book_mapping b, book_author_mapping c where a.category_number = b.category_number and a.category_active_flag = 1 and b.book_number = c.book_number)
	AND			a.book_number = ?
	AND			a.media_review_type_number = b.media_review_type_number
	
	ORDER BY	b.media_review_type_sort_order ASC, media_review_rating DESC, media_review_title ASC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3063
Parameter #2(CF_SQL_INTEGER) = 3063
Parameter #3(CF_SQL_INTEGER) = 3063
Parameter #4(CF_SQL_INTEGER) = 3063

get_book_image (Datasource=bookbrowse_com_new, Time=18ms, Records=1) in /root/website/actions/udfs.cfm @ 06:41:44.044
select 	f.edition_publish_dt "hardcover_publish_dt", f.edition_jacket_image "hardcover_jacket_image", 
            g.edition_publish_dt "paperback_publish_dt", g.edition_jacket_image "paperback_jacket_image"
    
    from   	books a
	left join editions f on a.book_number = f.book_number and f.edition_paperback_flag = 0
	left join editions g on a.book_number = g.book_number and g.edition_paperback_flag = 1
                    
    where 	a.book_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3063

get_coauthor (Datasource=bookbrowse_com_new, Time=14ms, Records=1) in /root/website/actions/udfs.cfm @ 06:41:44.044
select 		book_number, 
            			CASE	WHEN datalength(d.author_middle_initial) > 1 
				                THEN d.author_first_name + ' ' + d.author_middle_initial + ' ' + d.author_last_name
				                ELSE d.author_first_name + ' ' + d.author_last_name
                        END "author",
                        d.author_number
            from		book_author_mapping e
            inner join	authors d ON e.author_number = d.author_number
            where		e.book_number = ?
			order by	book_author_mapping_number ASC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3063

get_arcs_for_ad (Datasource=bookbrowse_com_new, Time=24ms, Records=0) in /root/website/queries/qry_get_arcs_for_ad.cfm @ 06:41:44.044
SELECT 	top 10 a.arc_number,arc_promo_text,
		b.ezine_preview_number, b.ezine_preview_title, b.ezine_preview_subtitle, b.ezine_preview_jacket_image, b.ezine_preview_author, b.ezine_preview_publish_dt, 
		(select (CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,0))) AS numeric(12,0)))+
				(CASE WHEN right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) > 25 AND right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) < 50 THEN 0.5
				 WHEN right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) > 50 AND right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) < 75 THEN -0.5
				 ELSE 0
				 END)
 			from arc_allocator	where arc_number = a.arc_number and arc_allocator_review_approved_flag = 1) AS arcrating

FROM arcs a
INNER JOIN ezine_previews b ON b.ezine_preview_number = a.ezine_preview_number

WHERE arc_closed_flag = 1
AND arc_obc_flag = 0
AND getdate() >= arc_on_ad_dt
AND (select count(*) from arc_allocator d where d.arc_number = a.arc_number and arc_allocator_review_approved_flag = 1) > 1
and getdate() <= dateadd(day,1,a.arc_off_ad_dt)

ORDER BY NEWID()
get_arcs_for_ad (Datasource=bookbrowse_com_new, Time=56ms, Records=3) in /root/website/queries/qry_get_arcs_for_ad.cfm @ 06:41:44.044
SELECT 	top 3 a.arc_number,arc_promo_text,
			b.ezine_preview_number, b.ezine_preview_title, b.ezine_preview_subtitle, b.ezine_preview_jacket_image, b.ezine_preview_author, b.ezine_preview_publish_dt, 
			(select (CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,0))) AS numeric(12,0)))+
					(CASE WHEN right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) > 25 AND right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) < 50 THEN 0.5
					 WHEN right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) > 50 AND right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) < 75 THEN -0.5
					 ELSE 0
					 END)
				from arc_allocator	where arc_number = a.arc_number and arc_allocator_review_approved_flag = 1) AS arcrating

	FROM arcs a
	INNER JOIN ezine_previews b ON b.ezine_preview_number = a.ezine_preview_number

	WHERE arc_closed_flag = 1
	AND arc_obc_flag = 0
	AND getdate() >= arc_on_ad_dt
	AND (select count(*) from arc_allocator d where d.arc_number = a.arc_number and arc_allocator_review_approved_flag = 1) > 1

	ORDER BY a.arc_off_ad_dt DESC
get_ads (Datasource=bookbrowse_com_new, Time=20ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 06:41:44.044
SELECT		a.adid,	adweight
	FROM		adsystem a
	INNER JOIN 	ad_category_mapping b ON b.adid = a.adid
	WHERE		a.section = ?
	AND			a.active  = 1
	AND 		a.start_date <= GETDATE()
	
	AND (a.viewby LIKE '%n%' OR a.viewby = 'all')
            

	AND     (b.category_number IN (	SELECT	category_number
									FROM	category_book_mapping
									WHERE	book_number = ?)
      		OR 	b.category_number = ?)
Query Parameter Value(s) -
Parameter #1(CF_SQL_VARCHAR) = adzone6
Parameter #2(CF_SQL_VARCHAR) = 0
Parameter #3(CF_SQL_VARCHAR) = 0

get_ads (Datasource=bookbrowse_com_new, Time=21ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 06:41:44.044
SELECT	a.adid,	adweight
        FROM	adsystem a
        WHERE	a.section = ? 
        AND 	a.active  = 1 
        AND		a.start_date <= GETDATE()	
        
        AND (a.viewby LIKE '%n%' OR a.viewby = 'all')
        AND (select count(*) from ad_category_mapping where datalength(category_number) >= 1 and adid = a.adid) = 0
Query Parameter Value(s) -
Parameter #1(CF_SQL_VARCHAR) = adzone6

get_type (Datasource=bookbrowse_com_new, Time=1ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 06:41:44.044
SELECT	a.start_date, a.adid, a.end_date, a.camp_views, a.image_name, a.alt_text, a.views, a.code, a.adsize
        FROM	adsystem a
        WHERE	a.adid = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 1112

get_quotes (Datasource=bookbrowse_com_new, Time=16ms, Records=1) in /root/website/site/blocks/dsp_book_giveaway.cfm @ 06:41:44.044
select top 1 ezine_number, ezine_quote, ezine_quote_title
	    from ezines
	    where len(ezine_quote_title) > 1
	    order by newid()
get_free_newsletters (Datasource=bookbrowse_com_new, Time=32ms, Records=4) in /root/website/queries/qry_get_free_newsletters.cfm @ 06:41:44.044
SELECT 	*
    FROM 	free_newsletters
get_ads (Datasource=bookbrowse_com_new, Time=17ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 06:41:44.044
SELECT		a.adid,	adweight
	FROM		adsystem a
	INNER JOIN 	ad_category_mapping b ON b.adid = a.adid
	WHERE		a.section = ?
	AND			a.active  = 1
	AND 		a.start_date <= GETDATE()
		 	AND a.adid NOT IN (?) 
	AND (a.viewby LIKE '%n%' OR a.viewby = 'all')
            

	AND     (b.category_number IN (	SELECT	category_number
									FROM	category_book_mapping
									WHERE	book_number = ?)
      		OR 	b.category_number = ?)
Query Parameter Value(s) -
Parameter #1(CF_SQL_VARCHAR) = showcase_track
Parameter #2(CF_SQL_INTEGER) = 1112
Parameter #3(CF_SQL_VARCHAR) = 0
Parameter #4(CF_SQL_VARCHAR) = 0

get_ads (Datasource=bookbrowse_com_new, Time=20ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 06:41:44.044
SELECT	a.adid,	adweight
        FROM	adsystem a
        WHERE	a.section = ? 
        AND 	a.active  = 1 
        AND		a.start_date <= GETDATE()	
        		AND a.adid NOT IN (?) 
        AND (a.viewby LIKE '%n%' OR a.viewby = 'all')
        AND (select count(*) from ad_category_mapping where datalength(category_number) >= 1 and adid = a.adid) = 0
Query Parameter Value(s) -
Parameter #1(CF_SQL_VARCHAR) = showcase_track
Parameter #2(CF_SQL_INTEGER) = 1112

get_type (Datasource=bookbrowse_com_new, Time=14ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 06:41:44.044
SELECT	a.start_date, a.adid, a.end_date, a.camp_views, a.image_name, a.alt_text, a.views, a.code, a.adsize
        FROM	adsystem a
        WHERE	a.adid = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 594


Scope Variables

CGI Variables:
AUTH_PASSWORD=
AUTH_TYPE=
AUTH_USER=
CERT_COOKIE=
CERT_FLAGS=
CERT_ISSUER=
CERT_KEYSIZE=
CERT_SECRETKEYSIZE=
CERT_SERIALNUMBER=
CERT_SERVER_ISSUER=
CERT_SERVER_SUBJECT=
CERT_SUBJECT=
CF_TEMPLATE_PATH=/root/website/readers/index.cfm
CONTENT_LENGTH=
CONTENT_TYPE=
CONTEXT_PATH=
GATEWAY_INTERFACE=
HTTPS=
HTTPS_KEYSIZE=
HTTPS_SECRETKEYSIZE=
HTTPS_SERVER_ISSUER=
HTTPS_SERVER_SUBJECT=
HTTP_ACCEPT=*/*
HTTP_ACCEPT_ENCODING=gzip, br, zstd, deflate
HTTP_ACCEPT_LANGUAGE=
HTTP_CONNECTION=upgrade
HTTP_COOKIE=CFTOKEN=195a9fc637af6c8-13241038-EBD8-E5EB-CED3E16580074A5C; CFCLIENT_BOOKBROWSE=order%3Dp%23member%5Fnumber%3D0%23member%5Factive%5Fflag%3D0%23member%5Flogged%5Fin%5Fflag%3D0%23library%5Fuser%5Fflag%3D0%23view%3Dbooks%23; CFID=4090641; CFGLOBALS=urltoken%3DCFID%23%3D4090641%26CFTOKEN%23%3D195a9fc637af6c8%2D13241038%2DEBD8%2DE5EB%2DCED3E16580074A5C%23lastvisit%3D%7Bts%20%272026%2D06%2D01%2006%3A41%3A37%27%7D%23hitcount%3D287%23timecreated%3D%7Bts%20%272026%2D06%2D01%2006%3A40%3A57%27%7D%23cftoken%3D195a9fc637af6c8%2D13241038%2DEBD8%2DE5EB%2DCED3E16580074A5C%23cfid%3D4090641%23; FREEACCESSCOUNT=1
HTTP_HOST=dev.bookbrowse.com
HTTP_REFERER=https://dev.bookbrowse.com/reader_reviews/details/index.cfm/ref/34704/pr/y
HTTP_URL=
HTTP_USER_AGENT=Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
LOCAL_ADDR=127.0.0.1
PATH_INFO=/9304
PATH_TRANSLATED=/root/website/readers/index.cfm
QUERY_STRING=
REMOTE_ADDR=127.0.0.1
REMOTE_HOST=127.0.0.1
REMOTE_USER=
REQUEST_METHOD=GET
SCRIPT_NAME=/readers/index.cfm
SERVER_NAME=dev.bookbrowse.com
SERVER_PORT=8500
SERVER_PORT_SECURE=0
SERVER_PROTOCOL=HTTP/1.1
SERVER_SOFTWARE=
WEB_SERVER_API=
Client Variables:
cfid=4090641
cftoken=195a9fc637af6c8-13241038-EBD8-E5EB-CED3E16580074A5C
hitcount=333
lastvisit={ts '2026-06-01 06:41:44'}
library_user_flag=0
member_active_flag=0
member_logged_in_flag=0
member_number=0
order=p
timecreated={ts '2026-06-01 06:40:57'}
urltoken=CFID=4090641&CFTOKEN=195a9fc637af6c8-13241038-EBD8-E5EB-CED3E16580074A5C
view=books
Cookie Variables:
CFCLIENT_BOOKBROWSE=order=p#member_number=0#member_active_flag=0#member_logged_in_flag=0#library_user_flag=0#view=books#
CFGLOBALS=urltoken=CFID#=4090641&CFTOKEN#=195a9fc637af6c8-13241038-EBD8-E5EB-CED3E16580074A5C#lastvisit={ts '2026-06-01 06:41:37'}#hitcount=287#timecreated={ts '2026-06-01 06:40:57'}#cftoken=195a9fc637af6c8-13241038-EBD8-E5EB-CED3E16580074A5C#cfid=4090641#
CFID=4090641
CFTOKEN=195a9fc637af6c8-13241038-EBD8-E5EB-CED3E16580074A5C
FREEACCESSCOUNT=1
Session Variables:
cfid=4090641
cftoken=195a9fc637af6c8-13241038-EBD8-E5EB-CED3E16580074A5C
sessionid=BOOKBROWSE_4090641_195a9fc637af6c8-13241038-EBD8-E5EB-CED3E16580074A5C
urltoken=CFID=4090641&CFTOKEN=195a9fc637af6c8-13241038-EBD8-E5EB-CED3E16580074A5C
URL Parameters:
9304=
Debug Rendering Time: 15 ms