Jacqueline Winspear Interview, plus links to author biography, book summaries, excerpts and reviews

Jacqueline Winspear
Photo: Stephanie Mohan

Jacqueline Winspear

An interview with Jacqueline Winspear

Jacqueline Winspear talks about her Maisie Dobbs mystery series, set in Britain following World War I, why she is particularly interested in this time period and what she hopes readers will learn from it; how many of the books are inspired by stories from her own family; and about Pardonable Lies and An Incomplete Revenge in particular.

Apart from being a series of wonderful mysteries, the Maisie Dobbs novels have helped to acquaint readers with a place and time of which they might otherwise have known very little: England between the world wars. What, at a minimum, would you like for your readers - especially your non-British readers - to know about this period and what the First World War did to British society?

One of the most gratifying things that has happened since the books were published is that so many people have e-mailed or written to me to tell me that my books have encouraged them to find out more about this period of time and how the world was impacted by the Great War and the years until the outbreak of the Second World War. I would like my readers to understand something of history's gray areas, which are often well-served by fiction. For example, we know about the Depression of the twenties and thirties, and we know there was a Roaring Twenties, but that only takes care of rich, poor, and rich becoming poor. The grand parties of the twenties only roared for a certain echelon of society, and there was a whole segment that was virtually untouched by the depression - which in itself was experienced in different ways on either side of the Atlantic. My focus has always been on what happens to ordinary people in extraordinary times. I hope my readers see that history is a mirror - hold up the truth and we will see ourselves and our time reflected there. Now, what do we do with that knowledge?


All of the Maisie Dobbs mysteries to date have been deeply concerned with the lingering after effects of war. Having lived in both England and the United States, do you think the two cultures tend to have different understandings of this issue?

That's a tricky question. I don't think we have different understandings as much as different levels of memory, and part of this is to do with ways of looking at things. Personal experience of war is also vital to this question. In Britain there is a real sense of "Lest We Forget" (you will see this mirrored in Canada, Australia, and New Zealand). We do not have a Memorial Day, which always seems to be more about sales and barbecues than about honoring those who have fallen in wartime. Yet we have Remembrance Day, which many older people still refer to as "Armistice Day," which falls on the Sunday closest to the anniversary of the signing of the Armistice on November 11, 1918. And at 11:00 AM on November 11, Britain honors the dead with two minutes of silence. Whether you are in Safeway doing your shopping, or on a train, or a plane, or just walking along the street, people will be still and silent to honor the dead of all wars, whether it was the Great War, the Falklands War, or Iraq.

The aftereffects of war - especially the Great War - impacted almost every family in Britain, and changed life and society forever. A woman might have lost her husband, brother, cousins, and sons. A street would lose all its boys on one day, in one battle. And bear this in mind - in the Great War you could hear the guns in northern France from the south-coast communities in England, and of course, in the Second World War there were more civilian casualties than military in the first two years of the war. And those memories linger, are demonstrated in subsequent generations. It is only in recent years that London, for example, dealt with some of the last WW2 bomb sites. So perhaps it is the proximity of war that influences understanding, although now, with our twenty-four-hour all-color media, "proximity" has taken on a new meaning again. It's a big topic, and not one easily addressed in a paragraph.


We've actually been wondering more generally about your creative influences and the kinds of things that inspire you. What other writers, either in or out of the mystery genre, have you seen as influences and inspirations?

You know, I can't say that any one writer has inspired my writing, so that I yearn to write in their style or manner, however, as a reader and as an observer of the world around me, I am inspired all the time. I am a great fan of that cadre of authors from the Maxwell Perkins stable in the early part of the twentieth century - F. Scott Fitzgerald, Ernest Hemingway, John Dos Passos. I am a huge fan of John Steinbeck. I reread the classics as often as I can, and am particularly fond of Jane Austen. I love Somerset Maugham, George Orwell, Aldous Huxley, and Evelyn Waugh. More recent authors I particularly enjoy (and here's a broad spread!) are Susan Howach, Barbara Kingsolver, Terry Tempest Williams, David Lodge, Iris Murdoch, Muriel Spark, Anne Tyler, Jhumper Lahiri - the list goes on! For non-book inspiration, there's riding my horse - as Winston Churchill said, "No hour is ever wasted, that is spent in the saddle."

I am inspired by good writing whatever the source, from theater and film, to poetry and memoir. People inspire me - I am an observer of people at airports, you see all sorts of interesting things going on when people are in transit.


Much of your writing about Maisie has derived from stories that have been passed down in your family. An Incomplete Revenge, for example, is somewhat based on your parents' experiences of going "down hopping." What was it about these stories that most interested you?

I went hop-picking as a child, too, so I remember it well. I am engaged by family stories because they reflect our personal connection to different times, different places - and the way that time can render a place we know well all but unrecognizable, except from the heart. Looking through that window to personal social history fascinates me because it is so much more than an intellectual exercise - it is a spiritual and emotional connection to what has passed.


We tend to look to people in certain occupations, including ministers and educators, to uphold values like tolerance, fairness, and honesty. In An Incomplete Revenge, however, the representatives of these professions do not fare too well. You have a thieving, lying minister and a school headmaster who turns a blind eye to bullying and intolerance. Why did you choose to represent these characters in such a dubious light?

I didn't "choose" - it just happened that way. But perhaps it goes back to that curiosity about the gray areas. You will find kindness and compassion among villains as many times as you find greed, bullying, and intolerance among the pillars of society.


Your familiarity with gypsy words and customs seems quite extensive. How did you come to possess this knowledge?

It's a long story, but suffice it to say that a gypsy family - real Roma, not the pseudo-gypsies one reads about in Britain's tabloids today - were counted among my parents' dearest friends many years ago. Even as "gorja" my parents were welcomed as if they were family, and came to know their language and customs.


The gypsies in your novel choose not to assimilate, and, by remaining separate, they preserve their vitality and dignity. By contrast, the Martins, who crave acceptance within society, suffer horrifically for their efforts. Is it somehow strange that in a novel that stresses the importance of including those whom we perceive as "other," those who embrace separateness are in some ways better off for having done so?

It didn't occur to me that it was strange, to tell you the truth. It's just the way the story emerged. However, remember the gypsy tribe looked "different" and as a proud people would not have tried to assimilate, especially as their lifestyle would take them away again as soon as the work ended. People who move a lot - like military families, for example - tend to feel more grounded with others who live in the same way, who understand their way of life.


An Incomplete Revenge is prefaced with a quotation: "There is no revenge so complete as forgiveness." And, of course, the failure to forgive in the novel is the reason that the revenge in your title is incomplete. Yet isn't it true that some acts are so horrible that true forgiveness is impossible?

That depends on how you see forgiveness. I view forgiveness as the thing that lets you off the hook if you are wronged by another. If I do not forgive, that event/person/whatever it is that I do not want to forgive will have a power over my life. One's view of such a powerful emotion is extremely personal. Would I forgive the person who killed someone I loved? I don't know. But I would try. My soul would demand that I try.


It seems to us that An Incomplete Revenge has something very wise and powerful to say about the nature of evil: that it may actually be within our power to destroy it only if we can master the arts of forgiveness and letting go. At the same time, though, if we do forgive, we let the author of the evil go unpunished, and this result has its own kind of injustice. How are we to find a balance between the need to forgive and the need to punish?

Now you're asking me some questions that the wise struggle with! This is where you go into those gray areas, which means there isn't a stock answer. However, punishment is to do with revenge, and when powered by blind intense emotion can have a devastating impact far beyond those wronged and those who would do harm. I would have different responses, say, to the punishment of a billionaire corporate titan who knowingly played fast and loose with employee pensions, and the parent who tracks down the person who assaulted their child and causes them personal harm. And that's why we have a system of justice, no matter how flawed it may seem at times. It is supposed to bring clarity to the matter, so that we do not mete out our own punishment while the soul is so pained it cannot see.

There's an old saying, "He who seeks revenge should dig two graves." It gives one pause for thought.


Simon Lynch's long disability and Maisie's devotion to him give you the opportunity to develop a strong heroine while maintaining a plausible reason for denying her much of an active love interest. With Simon now gone, Maisie evidently faces a crossroads. As we look forward to Maisie's next adventure, should we expect more romance in her life, or will she travel on, majestically single? Or would you rather not say?

I think I would rather not say. What a spoiler that would be!


An Interview with Jacqueline Winspear (2005)

Who is Maisie and what inspired her?
I had not planned to write fiction. Even though one of my writing mentors had encouraged me to give it serious thought – at that point my passion was the personal essay. However, I was driving to work one morning, crawling along in heavy traffic, then stuck at a stop light, when I did what many people do in those conditions - I started daydreaming. Suddenly, in my mind's eye, I saw a woman - dressed in the fashion of the late 1920's - on the old wooden escalator at Warren Street station in London. She left the station, walked down Warren Street and stopped outside one of the houses, whereupon she took out an envelope with a set of keys. The scene continued, even as I heard the car horn from the driver behind me (the light had changed). I couldn't wait to get home that evening to write what I had seen that morning, which was essentially the first chapter of Maisie Dobbs, the first novel in the series. The thing was, that I knew so much about the character of Maisie before I had even reached work that day. She was born in Lambeth, a very poor area of south-east London, at the tail end of the 1800's. Her rise from the position of a maid working in service is due to her intelligence, intellect, and in no small part to her other intuitive gifts – gifts that are recognized by Dr. Maurice Blanche, a friend of her employer. She wins a place to study at Girton College, Cambridge, but cuts her education short in 1915 when she enlists for nursing service. After the war, she continues her education, then works for Blanche as his assistant. Blanche's history is complex – following medical training he also worked in "legal medicine" (forensics) and is a psychologist and, as readers come to know, also something of a philosopher. We first meet Maisie following his retirement, when she is setting up in business on her own.

It appears that your heroine is continually coming up against the dilemma of how to do her job as an investigator without letting her life - or her past - interfere. How does the theme of telling "pardonable lies" figure into that?

At the age of 18, Maisie was plunged into the horror of war first-hand when she was sent to France as a nurse at a casualty clearing station (CCS), which was very close to the front lines. In a way, she lost part of herself there - not only was she injured when the CCS was shelled, but she saw death at its most horrific, and its saddest. In Pardonable Lies she is required to return to France, a daunting prospect. It is like driving along a road where one has had a bad car accident from which one still suffers – you really would rather take another route. In Pardonable Lies, Maisie knows she is compromised, and the reader understands, too, that Maisie's suffering has never abated, that in her way she is as shell-shocked as many of the soldiers who returned from that war. In addition, Maisie is driven to ensure that, during an investigation, those she touches in the course of her work are left at peace with her actions, as far as that is possible. That struggle is at the heart of Pardonable Lies. The title was inspired by the following words:

Truly, to tell lies is not honorable;
but when the truth entails tremendous ruin,
to speak dishonorably is pardonable.
-- Sophocles (496BC-406BC), Creusa

Why did you choose the time following World War I for your novels? Do you have a particular interest in that time period?
My grandfather was severely wounded and shell-shocked at The Battle of the Somme in 1916. Even as a young child, I understood the extent of his suffering. When I asked questions about his profound limp and wheezy lungs, my mother would tell me that "Grandad was wounded in the Great War." It seemed such a terrible thing to me, most probably due to the gravity with which the words "Great War" were spoken. In fact, I can remember the very first time I asked questions about my grandfather's health. I think I was about five at the time. My grandparents came to stay once or twice a year, coming down on the steam train from London for a week or two at a time. During one of those early visits, I heard my grandfather get up very early. I waited for him to go downstairs, then clambered out of bed and followed him down. I sat on the stairs and peeked through the wooden rail. I saw him soaking his feet and calves, drying them and massaging his legs up and down. Then I saw my grandfather begin to remove something from his leg, then another, and another. Later, I asked what Granddad was doing and my mother explained to me – as best she could to a child – that he was removing shrapnel from his legs, shrapnel embedded when he went "over the top" during the Battle of the Somme. Of course, you can imagine the "what" and "why" questions that followed, however, I was left with an overriding image – the picture of darkness, of guns and of my grandfather wounded on the ground. I later learned that throughout my father's childhood, my grandfather was periodically taken away by ambulance for a month or so, perhaps to a soldiers convalescent home by the sea, so that he could breathe in fresh air to help his gas-damaged lungs. My grandfather died when he was 77, and to the day he died he was still removing shrapnel from his wounds of over fifty years before.

As I grew up my curiosity about the "war to end all wars" deepened, so that I always seemed to be reading something about the war. However, my interest was not in the politics of the time so much as rooted in the experiences of ordinary men and women, boys and girls, not only on the battlefield, but on the home front. And though I never set out to write a "war" novel, it came as no surprise that this part of history formed the backdrop of Maisie Dobbs and other books in the series.

For me, the war and its aftermath provide fertile ground for a mystery, offering a literary vehicle for exploring the time. Such great social upheaval allows for the strange and unusual to emerge and a time of intense emotions can, to the writer of fiction, provide ample fodder for a compelling story, especially one concerning criminal acts and issues of guilt and innocence. After all, a generation is said to have lost its innocence in The Great War.

What research have you done in order to reconstruct this time so convincingly?
My research is ongoing. Books and records from and about the period are the mainstay of my personal library. I also read memoirs, fiction from the period, mainly to enhance my sense of language, of societal mores, etc. In addition, I do a considerable amount of primary research, which includes, for example, consulting the archives at the Imperial War Museum in London, walking the streets where I am setting scenes and then comparing what I can see and feel today with old photos and accounts of life at the time. Last year I went to France and Belgium as part of my research for Pardonable Lies. It was a profound experience, because I walked sections of the battlefields of the Somme and Ypres, even found live ammunition from the war some 90 years ago (there's an essay about that trip on my website). What I constantly had to do was to imagine how that place might have looked twelve years after the war, in 1930, when Maisie has to return to France as part of her investigation into the death of a wartime aviator.

How is Maisie Dobbs an example of how women lived during that time and what they were able to accomplish?
One of the things I wanted to do in creating the character of Maisie Dobbs was to honor the spirit of that generation of women in Britain. They were the first generation of women in modern times to go into war related work, and they did so in the hundreds of thousands. Some 60,000 women went directly into war-related roles, as nurses, ambulance drivers, code-breakers, munitions workers, and in military support roles. Just shy of another 500,000 women assumed men's jobs so that men could be released to the battlefield. There was barely a field of endeavor untouched by a woman's hand – they built ships, built aircrafts, drove trains and buses, worked the land, the first women police auxiliaries pounded the London streets, women worked in construction and in brewing – they did everything. But the sad thing is that they were a generation for whom life would never be as they might have expected it to be when they were girls in the years before the war. The 1921 census revealed that there were two million "surplus" women in Britain. Approximately 750,000 men of marriageable age were killed in the war, and about 1,350,000 came home seriously wounded and shell-shocked. Of course, those "surplus" women became the subject of jokes and speculation, and were often seen as something to be feared (heaven knows what they might get up to!). The truth is that they were an extraordinary generation. Plunged into war, having lost sweethearts and young husbands, brothers and fathers, women now had to be financially independent, they had to build community and friendships, and they had to prepare for growing old alone. The accomplishments and resolve of that generation is inspiring – for example, it was the great age of women novelists in Britain.

In Pardonable Lies, psychics and their work figure prominently into the plot. Do you believe that certain people possess the ability to conjure up the past and see the future? Is there a connection on some level to the work that Maisie does? Where does your interest in psychics' work stem from?
There are two different things here. First, there is Maisie's work and some of the techniques she uses to gain the truth of a person or situation. I believe there are some who are more attuned to the "inner voice" and who listen to their intuition more keenly and act upon it accordingly. Maisie is such a person, deeply attuned to her inner voice and able to gain a sense of a person's innermost thoughts and feelings from the way a person walks, words chosen, and so on. She gives credence to any sensations indicating that danger is close, or that someone is not who they claim to be, and this super-sensitivity can be interpreted as a psychic ability. Some of her methods were in their infancy in the early years of the last century, and I was informed by a psychologist once that in her work she uses the same "mirroring" technique as Maisie.

In the years of the Great War and the post-war period, there were thousands of people in Britain who believed in the power of psychics and mediums. And 1917 was the year in which more ouija boards were sold in Britain than at any other time - use of the ouija board is now illegal there. So many men died so suddenly in the Great War, that there was a collective yearning for contact. Imagine this - a whole village of men could be lost in minutes as they went "over the top" into battle. The occult offered the possibility of that final communication with a loved one, a chance to say, "Farewell" or "I love you" that was not offered in any other quarter. There were so many charlatans who took advantage of the bereaved, as well as those who wanted to do good but had no more ability to speak to the dead than the next person. I should add, though, that the term 'occult' is used here in accordance with a more universal meaning: the deeper spiritual reality that cannot be understood using pure reason or material science. The modern interpretations tend towards the derogatory and point to an evil connotation.

When you begin writing your novels, do you have the details of who did what, where, when and why mapped out specifically or do they develop as you write?
I have a basic idea of the who, the what and the where – a map of where I am going. The wonderful thing about a map is that it allows you to be more of an adventurer, because if you lose your way, you have something to come back to. Though I have key markers in the plot mapped out, I am also able to go off down another road if I am led there by curiosity, a dream or just my fingers on the keyboard.

Do you have to read Maisie Dobbs and Birds of a Feather before you read this one?
Pardonable Lies can definitely be read out of sequence, because I have woven just enough basic history from the first two novels to enable readers to grasp the background quite readily. However, any series, there is something to be gained from reading earlier books. It's not essential reading, but I think the readers of Pardonable Lies will enjoy going back to read the first two books.

Can you tell us what is next for Maisie?
Messenger of Truth is set in early 1931. Nicholas "Nick" Bassington-Hope, a controversial artist and veteran of the Great War, now on the cusp of fame, is found dead. His demise from a fall on the night before a much anticipated exhibition of his work at a famed Albemarle Street gallery is recorded as "accidental." The victim's twin sister, a former Girton student and wartime journalist who disguised herself as a man to get close to the battlefield, comes to Maisie Dobbs for help. Despite all evidence to the contrary, Georgina Bassington-Hope believes her brother was murdered. Maisie takes on the case, which will take her from the underbelly of London's art world to the desolate beaches of Dungeness in Kent. Her immersion in her work threatens her budding romance with Andrew Dene, and an unexpected visitor needs her help, as does a desperate Beale family.

Unless otherwise stated, this interview was conducted at the time the book was first published, and is reproduced with permission of the publisher. This interview may not be reproduced or reprinted without permission in writing from the copyright holder.

Membership Advantages
  • Reviews
  • "Beyond the Book" articles
  • Free books to read and review (US only)
  • Find books by time period, setting & theme
  • Read-alike suggestions by book and author
  • Book club discussions
  • and much more!
  • Just $60 for 12 months or $20 for 3 months.
  • More about membership!

Books by this Author

Books by Jacqueline Winspear at BookBrowse
A Sunlit Weapon jacket The White Lady jacket The Consequences of Fear jacket This Time Next Year We'll Be Laughing jacket
Membership Advantages
  • Reviews
  • "Beyond the Book" articles
  • Free books to read and review (US only)
  • Find books by time period, setting & theme
  • Read-alike suggestions by book and author
  • Book club discussions
  • and much more!
  • Just $60 for 12 months or $20 for 3 months.
  • More about membership!

Read-Alikes

All the books below are recommended as read-alikes for Jacqueline Winspear but some maybe more relevant to you than others depending on which books by the author you have read and enjoyed. So look for the suggested read-alikes by title linked on the right.
How we choose readalikes

  • Boris Akunin

    Boris Akunin

    Boris Akunin is the pen name of Grigory Chkhartishvili, who was born in the Republic of Georgia in 1956. A philologist, critic, essayist, and translator of Japanese, Akunin published his first detective stories in 1998 and ... (more)

    If you enjoyed:
    Pardonable Lies

    Try:
    The Winter Queen
    by Boris Akunin

  • Addison Armstrong

    Addison Armstrong

    Addison Armstrong graduated from Vanderbilt University in 2020 with degrees in elementary education and language and literacy studies and received her master's degree from Vanderbilt in Reading Education in 2021. The Light of... (more)

    If you enjoyed:
    The White Lady

    Try:
    The War Librarian
    by Addison Armstrong

We recommend 28 similar authors


Non-members can see 2 results. Become a member
Membership Advantages
  • Reviews
  • "Beyond the Book" articles
  • Free books to read and review (US only)
  • Find books by time period, setting & theme
  • Read-alike suggestions by book and author
  • Book club discussions
  • and much more!
  • Just $60 for 12 months or $20 for 3 months.
  • More about membership!

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...

In order to become the master, the politician poses as the servant

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 /author_interviews/full/index.cfm
Time Stamp 01-Jun-26 03:07 PM
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
1780326446614 ms 1.78032644661E+012 ms 1 /root/website/app_server.cfm
1277 ms 1277 ms 1 /root/website/author_interviews/full/index.cfm
371 ms 371 ms 1 /root/website/app_layout.cfm
324 ms 324 ms 1 /root/website/author_interviews/full/dsp_main.cfm
320 ms 320 ms 1 /root/website/app_globals.cfm
247 ms 247 ms 1 /root/website/site/blocks/layout/dsp_right_column.cfm
227 ms 76 ms 3 /root/website/adsystem/adsystem_mod.cfm
171 ms 86 ms 2 /root/website/queries/qry_get_books_by_author_id.cfm
137 ms 137 ms 1 /root/website/queries/qry_get_books_by_author_id_lite.cfm
127 ms 127 ms 1 /root/website/queries/qry_get_active_obc.cfm
104 ms 104 ms 1 /root/website/site/blocks/dsp_border_first_impressions.cfm
103 ms 103 ms 1 /root/website/queries/qry_get_arcs_for_ad.cfm
95 ms 95 ms 1 /root/website/adzones/AdZone6.cfm
83 ms 83 ms 1 /root/website/site/blocks/layout/dsp_footer.cfm
82 ms 82 ms 1 /root/website/adzones/showcase_track.cfm
65 ms 22 ms 3 /root/website/site/blocks/membership_advantages.cfm
63 ms 63 ms 1 /root/website/queries/qry_get_current_competition.cfm
61 ms 20 ms 3 /root/website/queries/qry_get_member_account_types.cfm
57 ms 57 ms 1 /root/website/queries/qry_get_author_readalikes_by_id.cfm
53 ms 53 ms 1 /root/website/adzones/AdZone2.cfm
43 ms 43 ms 1 /root/website/queries/qry_get_bb_briefs_by_author.cfm
38 ms 10 ms 4 /root/website/actions/act_spider_tracker.cfm
31 ms 31 ms 1 /root/website/site/blocks/dsp_book_giveaway.cfm
29 ms 29 ms 1 /root/website/act_check_login.cfm
28 ms 28 ms 1 /root/website/queries/qry_get_member_info.cfm
27 ms 27 ms 1 /root/website/queries/qry_get_current_wordplay.cfm
27 ms 27 ms 1 /root/website/site/blocks/layout/dsp_bottom_block.cfm
26 ms 26 ms 1 /root/website/queries/qry_get_free_newsletters.cfm
22 ms 22 ms 1 /root/website/actions/adstatus.cfm
17 ms 17 ms 1 /root/website/queries/qry_get_all_books_by_author_id.cfm
11 ms 11 ms 1 /root/website/site/blocks/layout/dsp_header.cfm
8 ms 8 ms 1 /root/website/site/blocks/layout/main_menu.cfm
7 ms 7 ms 1 /root/website/site/blocks/layout/main_search.cfm
1 ms 1 ms 1 /root/website/act_libraryIPLogin.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/dsp_border_booktalk.cfm
1 ms 1 ms 1 /root/website/site/blocks/layout/head.cfm
0 ms 0 ms 1 /root/website/Application.cfm
0 ms 0 ms 1 /root/website/actions/udfs.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/site/blocks/dsp_header_newsletter.cfm
0 ms 0 ms 1 /root/website/site/blocks/dsp_top_author_block.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
7 ms  STARTUP, PARSING, COMPILING, LOADING, & SHUTDOWN
1284 ms  TOTAL EXECUTION TIME
red = over 250 ms average execution time


SQL Queries

spidercheck (Datasource=bookbrowse_com_new, Time=37ms, Records=1) in /root/website/actions/act_spider_tracker.cfm @ 15:07:26.026
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=28ms, Records=0) in /root/website/queries/qry_get_member_info.cfm @ 15:07:26.026
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=21ms, Records=2) in /root/website/actions/adstatus.cfm @ 15:07:26.026
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 @ 15:07:26.026
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=27ms, Records=1) in /root/website/queries/qry_get_current_wordplay.cfm @ 15:07:26.026
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=25ms, Records=0) in /root/website/queries/qry_get_current_competition.cfm @ 15:07:26.026
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=37ms, Records=0) in /root/website/queries/qry_get_current_competition.cfm @ 15:07:26.026
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 @ 15:07:26.026
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=31ms, Records=0) in /root/website/queries/qry_get_active_obc.cfm @ 15:07:26.026
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=55ms, Records=1) in /root/website/queries/qry_get_active_obc.cfm @ 15:07:26.026
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=40ms, Records=4) in /root/website/queries/qry_get_active_obc.cfm @ 15:07:26.026
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_books_by_author_id (Datasource=bookbrowse_com_new, Time=62ms, Records=4) in /root/website/queries/qry_get_books_by_author_id_lite.cfm @ 15:07:27.027
select	a.book_number, a.book_title, a.book_sub_title, book_short_summary,
				(CASE WHEN f.edition_publish_dt < g.edition_publish_dt OR g.edition_publish_dt IS NULL THEN f.edition_publish_dt
                      ELSE g.edition_publish_dt 
                      END) "publish_dt"
		
        from 	books a
		inner join book_author_mapping e ON e.book_number = a.book_number
        inner join authors d ON d.author_number = e.author_number
        left outer join editions f ON a.book_number = f.book_number and f.edition_paperback_flag = 0 
   		left outer join editions g ON a.book_number = g.book_number and g.edition_paperback_flag = 1 
		
       	where 	d.author_number = ?
        and 	a.book_number IN (	select	distinct b.book_number 
        							from	categories a, category_book_mapping b 
                                    where 	a.category_number = b.category_number 
                                    and 	a.category_active_flag = 1)

		order by publish_dt DESC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 1028

get_author_by_author_id (Datasource=bookbrowse_com_new, Time=73ms, Records=1) in /root/website/queries/qry_get_books_by_author_id_lite.cfm @ 15:07:27.027
select	d.author_number, d.author_first_name, d.author_middle_initial, d.author_last_name, d.author_pronunciation,
				i.author_info_number, i.author_number, i.author_info_image, i.author_info_entry_dt,
                i.author_info_url, i.author_info_interview_summary, i.author_info_interview, i.author_info_biography, i.author_info_copyright_info
                		
        from 	authors d, author_info i
		
        where 	d.author_number = ?
        and 	d.author_number = i.author_number
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 1028

get_all_books_by_author_id (Datasource=bookbrowse_com_new, Time=17ms, Records=17) in /root/website/queries/qry_get_all_books_by_author_id.cfm @ 15:07:27.027
select	a.book_number, 
        		'' AS ezine_preview_number,
                a.book_title, 
                a.book_sub_title, 
				(CASE WHEN f.edition_publish_dt < g.edition_publish_dt OR g.edition_publish_dt IS NULL THEN f.edition_publish_dt
                      ELSE g.edition_publish_dt 
                      END) "publish_dt",
                '' as "jacket"
		
        from 	books a
		inner join book_author_mapping e ON e.book_number = a.book_number
        inner join authors d ON d.author_number = e.author_number
		left outer join editions f ON a.book_number = f.book_number and f.edition_paperback_flag = 0
		left outer join editions g ON a.book_number = g.book_number and g.edition_paperback_flag = 1
		
        where 	d.author_number = ?
        and 	a.book_number IN (	select	distinct b.book_number 
        							from	categories a, category_book_mapping b 
                                    where 	a.category_number = b.category_number 
                                    and 	a.category_active_flag = 1)        
        UNION

		select	'' AS book_number,
        		ezine_preview_number, 
				ezine_preview_title AS "book_title", 
				ezine_preview_subtitle AS "book_sub_title",
                ezine_preview_publish_dt AS "publish_dt",
                ezine_preview_jacket_image as "jacket"
		
        from 	ezine_previews
		
        where 	ezine_preview_bb_author_link = ?
        and		ezine_preview_bb_link < 1
        
        order by publish_dt DESC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 1028
Parameter #2(CF_SQL_INTEGER) = 1028

get_bb_briefs_by_author (Datasource=bookbrowse_com_new, Time=42ms, Records=13) in /root/website/queries/qry_get_bb_briefs_by_author.cfm @ 15:07:27.027
select	ezine_preview_number, 
				ezine_preview_title, 
				ezine_preview_subtitle,
                ezine_preview_publish_dt ,
                ezine_preview_jacket_image
		
        from 	ezine_previews
		
        where 	ezine_preview_bb_author_link = ?
        and		(ezine_preview_bb_link IS NULL
				 or ezine_preview_bb_link < 1)
        and		ezine_number > 0
        
		order by ezine_preview_publish_dt DESC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 1028

get_author_readalikes_by_id (Datasource=bookbrowse_com_new, Time=56ms, Records=28) in /root/website/queries/qry_get_author_readalikes_by_id.cfm @ 15:07:27.027
SELECT		a.author_number,
			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 AS "author_full_name",
			b.book_number, 
			f.book_title as "book",

			CASE	WHEN datalength(e.author_middle_initial) > 0 
					THEN e.author_first_name + ' ' + e.author_middle_initial + ' ' + e.author_last_name
					ELSE e.author_first_name + ' ' + e.author_last_name
					END AS "liked_author_full_name",
			e.author_number as "liked_author_number", 
			g.book_title as "liked_book",
			c.liked_book_number as "liked_book_number" 

FROM		authors a
INNER JOIN	book_author_mapping b ON b.author_number = a.author_number
INNER JOIN	liked c ON c.book_number = b.book_number
INNER JOIN	book_author_mapping d ON d.book_number = c.liked_book_number
INNER JOIN	authors e ON e.author_number = d.author_number
INNER JOIN	books f on f.book_number = b.book_number
INNER JOIN	books g on g.book_number = c.liked_book_number

WHERE		a.author_number = ?

ORDER BY 	e.author_last_name, e.author_first_name
Query Parameter Value(s) -
Parameter #1(cf_sql_integer) = 1028

get_ads (Datasource=bookbrowse_com_new, Time=29ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 15:07:27.027
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) = adzone2
Parameter #2(CF_SQL_VARCHAR) = 0
Parameter #3(CF_SQL_VARCHAR) = 0

get_ads (Datasource=bookbrowse_com_new, Time=22ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 15:07:27.027
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) = adzone2

get_member_account_types (Datasource=bookbrowse_com_new, Time=13ms, Records=2) in /root/website/queries/qry_get_member_account_types.cfm @ 15:07:27.027
select member_account_type_number, member_account_type_name, member_account_type_charge, member_account_type_charge_frequency, member_account_type_postscript, member_account_type_months, member_account_type_stripe_lookup_key
from member_account_types
where member_account_type_number = (select top 1 member_account_type_number
									from member_account_types
									where member_account_type_months = 12
									and member_account_type_public = 1
									order by member_account_type_charge ASC)
									
or member_account_type_number =		(select top 1 member_account_type_number
									from member_account_types
									where member_account_type_months = 3
									and member_account_type_public = 1
									order by member_account_type_charge ASC)
									
order by member_account_type_sort_order ASC
get_book_image (Datasource=bookbrowse_com_new, Time=22ms, Records=1) in /root/website/actions/udfs.cfm @ 15:07:27.027
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) = 4627

get_member_account_types (Datasource=bookbrowse_com_new, Time=26ms, Records=2) in /root/website/queries/qry_get_member_account_types.cfm @ 15:07:27.027
select member_account_type_number, member_account_type_name, member_account_type_charge, member_account_type_charge_frequency, member_account_type_postscript, member_account_type_months, member_account_type_stripe_lookup_key
from member_account_types
where member_account_type_number = (select top 1 member_account_type_number
									from member_account_types
									where member_account_type_months = 12
									and member_account_type_public = 1
									order by member_account_type_charge ASC)
									
or member_account_type_number =		(select top 1 member_account_type_number
									from member_account_types
									where member_account_type_months = 3
									and member_account_type_public = 1
									order by member_account_type_charge ASC)
									
order by member_account_type_sort_order ASC
get_books_by_author_id (Datasource=bookbrowse_com_new, Time=27ms, Records=2) in /root/website/queries/qry_get_books_by_author_id.cfm @ 15:07:27.027
select	a.book_number, 
				a.book_title, 
				(CASE WHEN UPPER(LEFT(a.book_title, 2)) = 'A ' THEN SUBSTRING(a.book_title, 3, len(a.book_title) - 2) WHEN UPPER(LEFT(a.book_title, 3)) = 'AN ' THEN SUBSTRING(a.book_title, 4, len(a.book_title) - 3) WHEN UPPER(LEFT(a.book_title, 4)) = 'THE ' THEN SUBSTRING(a.book_title, 5, len(a.book_title) - 4) ELSE a.book_title END) "sort_book_title", 
				a.book_sub_title, 
				a.book_entry_dt, 
				a.book_short_summary, 
				a.book_jacket_info, 
                a.book_excerpt, 
                a.book_reading_guide,
				d.author_number, d.author_first_name, d.author_middle_initial, d.author_last_name, 
				f.edition_publish_dt "hardcover_publish_dt", f.edition_number_of_pages "hardcover_number_of_pages", f.edition_isbn "hardcover_isbn", f.edition_isbn13 "hardcover_isbn13",f.edition_jacket_image "hardcover_jacket_image",
				g.edition_publish_dt "paperback_publish_dt", g.edition_number_of_pages "paperback_number_of_pages", g.edition_isbn "paperback_isbn", g.edition_isbn13 "paperback_isbn13",g.edition_jacket_image "paperback_jacket_image",
				i.author_info_biography, i.author_info_interview, i.author_info_image, i.author_info_url,
                (select count(c.book_number) as "author_bookcount" from book_author_mapping c where c.author_number = ?) + (select count(e.ezine_preview_number) as "author_bookcount" from ezine_previews e where e.ezine_preview_bb_author_link = ?) as "authorbookcount"
                
		    from books a
            inner join book_author_mapping e ON a.book_number = e.book_number
            inner join authors d ON e.author_number = d.author_number
            inner join author_info i ON d.author_number = i.author_number
            left outer join editions f ON a.book_number = f.book_number and f.edition_paperback_flag = 0
            left outer join editions g ON a.book_number = g.book_number and g.edition_paperback_flag = 1
                        
            where e.author_number = ?
            and a.book_number IN (select distinct b.book_number from categories a, category_book_mapping b where a.category_number = b.category_number and a.category_active_flag = 1)
			
            order by sort_book_title
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 888
Parameter #2(CF_SQL_INTEGER) = 888
Parameter #3(CF_SQL_INTEGER) = 888

get_author_by_author_id (Datasource=bookbrowse_com_new, Time=16ms, Records=1) in /root/website/queries/qry_get_books_by_author_id.cfm @ 15:07:27.027
select	d.author_number, d.author_first_name, d.author_middle_initial, d.author_last_name, d.author_pronunciation,
                CASE	WHEN datalength(d.author_middle_initial) > 0 
                        THEN d.author_first_name + ' ' + d.author_middle_initial + ' ' + d.author_last_name
                        ELSE d.author_first_name + ' ' + d.author_last_name
                        END AS "author_full_name",
				i.author_info_number, i.author_number, i.author_info_image, i.author_info_entry_dt,
                i.author_info_url, i.author_info_interview_summary, i.author_info_interview, i.author_info_biography, i.author_info_copyright_info
                		
        from 	authors d, author_info i
		
        where 	d.author_number = ?
        and 	d.author_number = i.author_number
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 888

get_books_by_author_id (Datasource=bookbrowse_com_new, Time=55ms, Records=1) in /root/website/queries/qry_get_books_by_author_id.cfm @ 15:07:27.027
select	a.book_number, 
				a.book_title, 
				(CASE WHEN UPPER(LEFT(a.book_title, 2)) = 'A ' THEN SUBSTRING(a.book_title, 3, len(a.book_title) - 2) WHEN UPPER(LEFT(a.book_title, 3)) = 'AN ' THEN SUBSTRING(a.book_title, 4, len(a.book_title) - 3) WHEN UPPER(LEFT(a.book_title, 4)) = 'THE ' THEN SUBSTRING(a.book_title, 5, len(a.book_title) - 4) ELSE a.book_title END) "sort_book_title", 
				a.book_sub_title, 
				a.book_entry_dt, 
				a.book_short_summary, 
				a.book_jacket_info, 
                a.book_excerpt, 
                a.book_reading_guide,
				d.author_number, d.author_first_name, d.author_middle_initial, d.author_last_name, 
				f.edition_publish_dt "hardcover_publish_dt", f.edition_number_of_pages "hardcover_number_of_pages", f.edition_isbn "hardcover_isbn", f.edition_isbn13 "hardcover_isbn13",f.edition_jacket_image "hardcover_jacket_image",
				g.edition_publish_dt "paperback_publish_dt", g.edition_number_of_pages "paperback_number_of_pages", g.edition_isbn "paperback_isbn", g.edition_isbn13 "paperback_isbn13",g.edition_jacket_image "paperback_jacket_image",
				i.author_info_biography, i.author_info_interview, i.author_info_image, i.author_info_url,
                (select count(c.book_number) as "author_bookcount" from book_author_mapping c where c.author_number = ?) + (select count(e.ezine_preview_number) as "author_bookcount" from ezine_previews e where e.ezine_preview_bb_author_link = ?) as "authorbookcount"
                
		    from books a
            inner join book_author_mapping e ON a.book_number = e.book_number
            inner join authors d ON e.author_number = d.author_number
            inner join author_info i ON d.author_number = i.author_number
            left outer join editions f ON a.book_number = f.book_number and f.edition_paperback_flag = 0
            left outer join editions g ON a.book_number = g.book_number and g.edition_paperback_flag = 1
                        
            where e.author_number = ?
            and a.book_number IN (select distinct b.book_number from categories a, category_book_mapping b where a.category_number = b.category_number and a.category_active_flag = 1)
			
            order by sort_book_title
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3710
Parameter #2(CF_SQL_INTEGER) = 3710
Parameter #3(CF_SQL_INTEGER) = 3710

get_author_by_author_id (Datasource=bookbrowse_com_new, Time=68ms, Records=1) in /root/website/queries/qry_get_books_by_author_id.cfm @ 15:07:27.027
select	d.author_number, d.author_first_name, d.author_middle_initial, d.author_last_name, d.author_pronunciation,
                CASE	WHEN datalength(d.author_middle_initial) > 0 
                        THEN d.author_first_name + ' ' + d.author_middle_initial + ' ' + d.author_last_name
                        ELSE d.author_first_name + ' ' + d.author_last_name
                        END AS "author_full_name",
				i.author_info_number, i.author_number, i.author_info_image, i.author_info_entry_dt,
                i.author_info_url, i.author_info_interview_summary, i.author_info_interview, i.author_info_biography, i.author_info_copyright_info
                		
        from 	authors d, author_info i
		
        where 	d.author_number = ?
        and 	d.author_number = i.author_number
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3710

get_member_account_types (Datasource=bookbrowse_com_new, Time=21ms, Records=2) in /root/website/queries/qry_get_member_account_types.cfm @ 15:07:27.027
select member_account_type_number, member_account_type_name, member_account_type_charge, member_account_type_charge_frequency, member_account_type_postscript, member_account_type_months, member_account_type_stripe_lookup_key
from member_account_types
where member_account_type_number = (select top 1 member_account_type_number
									from member_account_types
									where member_account_type_months = 12
									and member_account_type_public = 1
									order by member_account_type_charge ASC)
									
or member_account_type_number =		(select top 1 member_account_type_number
									from member_account_types
									where member_account_type_months = 3
									and member_account_type_public = 1
									order by member_account_type_charge ASC)
									
order by member_account_type_sort_order ASC
get_arcs_for_ad (Datasource=bookbrowse_com_new, Time=25ms, Records=0) in /root/website/queries/qry_get_arcs_for_ad.cfm @ 15:07:27.027
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=75ms, Records=3) in /root/website/queries/qry_get_arcs_for_ad.cfm @ 15:07:27.027
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=35ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 15:07:27.027
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=38ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 15:07:27.027
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=17ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 15:07:27.027
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=30ms, Records=1) in /root/website/site/blocks/dsp_book_giveaway.cfm @ 15:07:27.027
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=25ms, Records=4) in /root/website/queries/qry_get_free_newsletters.cfm @ 15:07:27.027
SELECT 	*
    FROM 	free_newsletters
get_ads (Datasource=bookbrowse_com_new, Time=27ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 15:07:27.027
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=21ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 15:07:27.027
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=29ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 15:07:27.027
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/author_interviews/full/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=
HTTP_HOST=dev.bookbrowse.com
HTTP_REFERER=
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=/author_number/1028/jacqueline-winspear
PATH_TRANSLATED=/root/website/author_interviews/full/index.cfm
QUERY_STRING=
REMOTE_ADDR=127.0.0.1
REMOTE_HOST=127.0.0.1
REMOTE_USER=
REQUEST_METHOD=GET
SCRIPT_NAME=/author_interviews/full/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=4104982
cftoken=404986fa78092580-25411E6C-A016-4252-3B04558ED3126EEC
hitcount=1
lastvisit={ts '2026-06-01 15:07:26'}
library_user_flag=0
member_active_flag=0
member_logged_in_flag=0
member_number=0
order=p
timecreated={ts '2026-06-01 15:07:26'}
urltoken=CFID=4104982&CFTOKEN=404986fa78092580-25411E6C-A016-4252-3B04558ED3126EEC
view=books
Cookie Variables:
CFID=4104982
CFTOKEN=404986fa78092580-25411E6C-A016-4252-3B04558ED3126EEC
Session Variables:
cfid=4104982
cftoken=404986fa78092580-25411E6C-A016-4252-3B04558ED3126EEC
sessionid=BOOKBROWSE_4104982_404986fa78092580-25411E6C-A016-4252-3B04558ED3126EEC
urltoken=CFID=4104982&CFTOKEN=404986fa78092580-25411E6C-A016-4252-3B04558ED3126EEC
URL Parameters:
author_number=1028
jacqueline-winspear=
Debug Rendering Time: 40 ms