Denise Hamilton Interview, plus links to author biography, book summaries, excerpts and reviews

Denise Hamilton
© Blake Little

Denise Hamilton

An interview with Denise Hamilton

Denise Hamilton discusses the first two books in her mystery/crime series, both set in Los Angeles - The Jasmine Trade and Sugar Skull.

As a cub reporter for the Los Angeles Times, I often worked weekends. And on summer days when the mercury climbed into the triple digits, one thing was sure: There would be a lot of murders.

People shot and stabbed and strangled each other in sleazy bars and hillside mansions, strip malls, abandoned houses and parking lots. Often, there were so many dead bodies clogging the news wires that the Times could barely mention them all.

Unless they were rich or famous or had died in a particularly gruesome fashion – such as the toddlers killed in a spray of drive-by bullets meant for someone else - the deceased didn’t merit their own stories. There were just too many murders and not enough room, and so most of them got folded as smoothly as egg whites into cake into what we called the "murder round-up" that ran every Monday morning.

Usually, that meant calling the police and coroner and getting only the most basic details – age, occupation, residence, cause of death. Still, when you had 40 murders in one weekend, that was one long litany of death.

I often wondered what exactly catapulted victims across the threshold of celebrity or gruesomeness into meriting their own story and how harried city editors made the decision to relegate someone’s life to several sentences. Where was the justice in that? And what did it say about my profession, assigning value to a person’s life based on their "newsworthiness."

So I’d sit there Sunday afternoon with my scraps of paper, pulling together the "murder roundup" and trying to make sense of the city’s senseless mayhem. And I began to imagine how some of those murders might be connected.

Because here’s the weird thing about LA. It’s so huge and geographically diverse, and yet people know each other across all sorts of improbable lines, especially when secrets are involved. Reporters hear many tantalizing stories they can’t print, and it’s only when Hugh Grant gets caught off Sunset Boulevard with a black prostitute or O.J. Simpson goes on trial for murdering his wife that it becomes a story. And then all sorts of seedy and surprising revelations trickle out, and we realize how swiftly the line can blur between those on the street and those in hillside homes perched high above it.

"Sugar Skull" takes the reader into three very disparate worlds that end up being connected in that improbable Angeleno way across frontiers of race, class, money and geography. I examine this interlinked world through the prism of the "sugar skull," a gaily decorated confection that many Mexican families lay on the graves of departed relatives during the "Day of the Dead" celebration that follows Halloween.

Sugar skulls also provided a handy leitmotif for delving into the city’s vast and varied Mexican-American community. I’m by no means an expert in this field, but after all, Southern California was once part of Mexico – as Silvio tells Eve in "Sugar Skull," and you can’t walk around Los Angeles without the strong sense that the two remain strongly linked. In addition, my husband is Mexican-American, and while his experience is radically different from Silvio’s, it nonetheless gives me a window into this world, as does my understanding of Spanish. I realize that all too often, people are still judged by what they look like, instead of who they are. That’s an issue that cuts both ways, and it fascinates me.

In addition, I was haunted by a story I once wrote about a teen runaway from a loving family who came to a bad end while hanging out with her street kid friends. As I dug deeper into the story, I learned of a phenomenon in which upper-middle class and wealthy girls sought out homeless "squatter" boyfriends. It seemed to be the epitome of cool in a world that called for ever more drastic extremes to shock one’s long-suffering parents. The teen characters in my story are quite different from the unfortunate girl I reported on, but the tragedy inspired me to try to get inside teen heads and explore through fiction the eternal lure of life’s darker side.

Lastly, my novels are a paean to Los Angeles itself, the city of illusions. In a place where the klieg lights of Hollywood cast their allure and people remake themselves every day, no one is who they seem. Like revelers at a Day of the Dead pageant, we’re all wearing masks, costumed by our professions, ethnicities and socio-economic status.

I have a sneaking suspicion that if Raymond Chandler were writing today, he wouldn’t focus on Hollywood and the city’s westside and beach communities. His plots would unfold deep in the sprawling suburbs and ethnic enclaves of L.A., places that didn’t even exist in his time, places where the third generation Americans live next door to just-arrived immigrants in newly built tracts and all sorts of terrifying and fascinating things can happen.

I read a lot of Chandler and Ross MacDonald when I first started writing mysteries. Not because I wanted to write like them – they were white, middle-aged men who lived in a mainly white, middle-class homogeneous city more than 50 years ago. But there was something in their tone that made me swoon, how they made love to the city, held it up for inspection like a discerning lover, noting all its outer loveliness, its quirky, non-traditional personality as well as its flaws.

My L.A. is not their L.A. -- it’s a bustling, vibrant, chaotic, clashing millennial world capital where violence and lust and greed bubble over daily in the papers and TV news shows, where the first world lives cheek by jowl with the third, where a motley collection of underground tribes eke out a living well below the radar of average, middle class folks. My jumping off point is where all those words collide.

That’s the landscape Eve probes with her pen. Being a journalist gives Eve – and me – an unlimited passport into the city. With her dogtags and notebook, Eve gains entrée into the most rarified strata of society – that of power brokers and blue blood - all the way down to homeless Latino transvestites who bathe in the L.A. River. To Eve, as to me, we are all linked. And it’s only when someone is killed unnaturally that we begin to trace back the threads to see where it all connects.

The Jasmine Trade - How Fact Inspired Fiction by Denise Hamilton

It was summer of 1989 and revolution was in the air. I was a Los Angeles Times reporter living in Budapest, filing fevered missives back to my paper about the cultural and political changes sweeping the region. When I returned to Los Angeles that fall, everything seemed pale and insipid compared to what I had just witnessed. Even worse, the Times was sending me to a new suburban posting -- in the San Gabriel Valley.

It was a move I undertook with some trepidation. Wasn't the Valley one big Ur-suburb, crammed with light industry, ethnic malls and tract homes? As I pulled out my Thomas Brothers Guide and flipped through its pale pastel grids, anxiety began to gnaw with little cat teeth. Rosemead, Duarte and Alhambra. El Monte, Walnut and Diamond Bar. I had seen signs for these towns while hurtling past on the freeway, bound for somewhere else. Now they would be my destination.

This was not the L.A. that I knew and cherished, the worlds so vividly drawn by Raymond Chandler, Nathanael West and Joan Didion. This was not the L.A. of Steven Spielberg or David Hockney or Wolfgang Puck. This was an uncharted landscape that lay very, very far east of La Brea. Nobody power-lunched in the San Gabriel Valley. Nobody lunched at all, probably. They were too busy working to pay off the second mortgage on those cookie cutter homes.

Baldwin Park, Temple City, Arcadia. The pages laid out by Les Freres Thomas continued apace. I flipped to Pasadena, the one city I had visited. Its syllables gave me succor, conjuring up a pearl-strung maiden aunt who trails the scent of violets. Pasadena was home to Greene and Greene architecture and the Rose Parade, Arroyo Culture and good college prep schools. I pictured myself sitting at some Italian cafe in Old Town, dipping an almond biscotti into my double latte as I interviewed the mayor about his progressive city planning policies.

The reality was more disconcerting. Our editorial office was halfway to San Bernardino in a city called Monrovia, wedged inside a shopping center buttressed by "anchor" tenants Toys R Us and Mervyn's. There was Italian food, alright, if Round Table Pizza counted. My colleagues drove 10 miles back to Pasadena to savor an overpriced cup of Starbucks coffee. By 9 a.m. on summer mornings, the bony spines of the San Gabriel Mountains were already obscured by a thick brown haze. They were a scrubby and desolate range from which bears and mountain lions streamed down to ogle and sometimes attack the inhabitants of houses gouged from the hills. Each year, flash floods and icy ridges claimed a few more. You wouldn't think such things could happen so close to the city but they did. Nature demanded its pound of flesh. It was only we who called it accidents.

But natural curiosity soon overcame my initial apathy. In the dead space between interviews and board meetings, I cruised the wide avenues. Soon, I felt I had stumbled onto the set of 20 quirky art films, all shooting at once.

There was Rosemead Boulevard, a location scout's wet dream, with its kitschy 1950s diners serving up chicken-fried steak and industrially breaded shrimp. After dinner at one of these joints, I imagined retreating to my space-age bachelorette pad at the Kon-Tiki apartments, lit nightly in glamorous red and blue to accent the banana-plant-and-wooden-canoe decor.

There was the "Golden Triangle," the heavily Asian communities of Hacienda Heights, Rowland Heights and Walnut that clustered around the Hsi Lai Buddhist Temple at the base of the foothills – which would later become notorious in the Democratic fundraising scandal.

Most of all, there was the San Gabriel Village Square, an anomaly that only the Pacific Rim fantasy aesthetic of Los Angeles could have produced. Built in a Spanish Mission style, with dusky peach tones, the three-story shopping center catered almost exclusively to the growing Overseas Chinese community. On occasion, a looky-lou gringo like myself would wander through, bug-eyed at the panorama of this Asian Disneyland, but we were the exception.

At San Gabriel Village Square - a name that developers clearly hoped would evoke a more bucolic time - you could gorge on Islamic Chinese food, buy designer suits from Hong Kong, pick out live lobsters for dinner and $700 bottles of French cognac for dessert and take out a $1 million insurance policy on your cheating spouse. I half-expected to see Jackie Chan hurtling off the balcony of the Ranch 99 market wearing his trademark grin, with scar-faced, gun-wielding gangsters in hot pursuit.

Eventually, this shopping center came to symbolize the changes I saw transforming the once-staid San Gabriel Valley as thoroughly as a major earthquake. On the Richter scales of culture, language and finance, the Big One was advancing city by city through this inland basin. Like a stealth Act of God, it toppled familiar landmarks and squeezed out those who clung blindly to an old world order that had already been pronounced extinct. In their wake came settlers who built new monuments and refashioned the basin in their own image. Sometime in the late 1980s, Monterey Park became the first continental U.S. city with a majority Asian population, but others weren't far behind. Traditionally WASP-y enclaves such as San Marino are now almost half Asian today, as is master-planned Walnut on the region's eastern rim. Drive along Valley Boulevard, the main Asian commercial thoroughfare, and you'll see as many signs in Chinese as English.

There is a historic continuum to all this that strikes me as inevitable. Hadn't the Gabrieleno Indians - a peaceful and semi-nomadic people who gave their name to this arid land - been swept away 150 years earlier by the Spanish land grantees, whose beautiful daughters were in turn assimilated through inter-marriage with WASPS from the Eastern Seaboard? What goes around comes around.

One sweltering day when the heat rising from the asphalt was enough to trigger hallucinations, I experienced an epiphany. I was as much a foreign correspondent here as I had been in Central Europe, and that's exactly how I should cover it. My turf began just 10 miles east of downtown, but it was light years removed from the monolithic towers of corporate America. With its 1.3 million residents, the Valley was a bubling brew of new immigrants and old-timers, small business and multi-million dollar shopping centers. All the big West Coast cities were morphing into 21st century Pacific Rim capitals, but in the San Gabriel Valley, the future had already here. If this place had an ethos, it was "Welcome stranger. Come live among us and prosper. The region had always been blessed with a diverse business base. Now it was adding entrepreneurial immigrants and investment from the booming Asian economies, becoming a banking hub for the Overseas Chinese as well as a growing number of Vietnamese, Malaysian, and others. While much of Southern California foundered in recession, the San Gabriel Valley thrived.

With all apologies to Ridley Scott's Blade Runner and Philip K. Dick, I believe the future of Los Angeles does not lie in the teeming vertical claustrophobia of decaying urban centers. Rather, it is under construction today in quiet hillside suburbs where the last empty spaces of the Wild, Wild West are meeting and fusing with an even wilder East. Here, big American developers wouldn't dream of breaking ground until their feng shui consultants have vetted the land and signed off on blueprints. Here, every blond-haired, blue-eyed sales agent in the new master-planned communities knows why the phone number on her business card ends in a triple eight - that's the luckiest number in Chinese numerology. Here, Latino workmen have become adept at installing built-in woks and storage cupboards for 50-lb. bags of rice.

This is a world that is only now seeping into American letters and cinema. It is too nascent, too unformed. Yet while unique to Southern California, it also transcends time and place the way our favorite parables always have. If Raymond Chandler were writing today, he'd send Philip Marlowe to investigate the disappearance of a Hong Kong businessman with a beautiful young wife whose El Monte computer chip factory was robbed of silicon-encrusted chips worth their weight in gold. The Midwestern extras who yearned for Hollywood oblivion in Nathanael West's Day of the Locust would be recast today as survivors of Pol Pot's killing fields now living above a Vietnamese noodle shop in Alhambra. And instead of chronicling white hippie culture in San Francisco, Joan Didion might hunker down in a Monterey Park nightclub with Hong Kong's "golden youth," whose parents have shipped them across the Pacific for safekeeping in advance of the British Crown Colony's return to Mainland China.

One day several years ago, I stood in front of a big brick house in San Marino. It was the type of place that a successful bank president might own. Instead, two teenagers lived here alone, unless you counted the elderly Chinese housekeeper who didn't speak English.

I was here to learn more about these kids, part of a phenomenon so widespread in the San Gabriel Valley that it had a name: Parachute Kids. Typically, the entire family would fly over from Hong Kong, Seoul or Taipei to establish a foothold in the U.S. as a hedge against political or economic uncertainty at home. The parents would buy a house in an affluent neighborhood, enroll the kids in school, then jet back to Asia to keep running the family business. Some left behind nannies. Others, like the ones I would call Jonathan, 18 and his sister Zoe, 14, were on their own. Parenting was done by fax, international phone calls and occasional visits when Dad was in town on business. "We've been on our own so long that we really don't know what it's like to have parents," Jonathan told me, staring at two large screen TVs. One was tuned to a Chinese satellite channel. The other to MTV. Just like the two lobes of his brain, I thought, wondering whether he ever heard static as the circuits crossed.

"Inside our hearts, we are Chinese,” he responded. "We respect traditional Chinese values. But now we live in America. And it gets expensive buying computer games and going out to eat. My parents give me $3,000 a month but sometimes it's not enough. If they're going to dump me here, the least they can do is give me a lot of money."

He searched my face for confirmation. Don't you think so? Gone was the cocky teenager of a moment past. He appeared a child playing at adulthood. The brown eyes stirred conflicting emotions in me. On one hand, I ached to think of the emotional burden that Jonathan's culture placed on the thin shoulders of its children. Yet who was I to impose my notions of Western propriety, when so many native-born teens with parents succumbed to gangs and drugs? Later, a youth counselor at the Asian Pacific Family Center in Rosemead told me that alienation, lack of parenting and loneliness ate away at youngsters like Jonathan. While many went on to college and careers, others joined Asian youth gangs like the Wah Ching, the V Boys or the Black Dragons, working as hired muscle for older gangsters from the triads, formal organizations with rules and hierarchies dating back to 16th century China. When these kids fell, they fell hard. Parents sitting in safe old Taipei had no idea of the scary stuff that lurked in our nice American suburbs. They thought it was a movie setting. If so, it was a John Woo movie, not American Graffiti. Guns and no roses, and 1,001 ways for a kid to go bad, when he's 16 and hurting deep inside.

Much later, I left San Marino and spun down Valley Boulevard, wrapped in a cocoon of cool air and swirling Chinese pop music that Jonathan had given me. The mellifluous sounds glittered at the edge of my consciousness. On the street, people moved in slow motion under neon signs lit with Chinese characters. In front of a tiny restaurant, a man with a stained white apron and chef's hat squatted on his haunches, smoking a cigarette. He held the white stub between his thumb and forefinger and inhaled deeply. I dangled between two worlds on a thin filament and felt it fray. When my story about parachute kids appeared in the coveted "Column One” slot of the Times, it won an award and was reprinted around the world. ABS, Sixty Minutes, Montel Williams and a slew of other media called, wanting me to give up my parachute kids. I told them to go do their own reporting. But I found myself wondering where Jonathan and Zoe were at night and what would happen to them tomorrow, next month, in two years? What were their parents like? Their lives back in Asia? What if they hooked up with the wrong people? What if, what if? And even as I went on to the next big story, I felt frustrated with the limitations of journalism. I wanted to imagine what happened to these kids long after I had filed my story and gone home..

Instead, I headed east on Interstate 10 each morning and watched the skyscrapers of downtown LA recede in my rear-view until they shrunk to the size of a glittering toy. Somewhere near Monterey Park, the familiar signpost disappeared altogether, and I knew I had crossed some invisible demarcation point. I was back in the San Gabriel Valley.

I had a new beat now and I drove the Valley's streets, looking for the heart of the Asian community. But what I searched for didn't exist, except as an abstract idea. The pulse was too diffuse, just like the fluid, ever-changing stretches of neighborhoods I visited on daily assignments. There was no single Asian community. There were numerous groups divided by culture, language, politics, class and ethnicity. Some were poor, living in overcrowded tenements where the smell of cooking oil mingled with car exhaust and curled around the heads of playing children. Others were middle class, working two jobs and praying their children would get into UCLA. Still others, like Jonathan's family, would be considered wealthy in any culture.

One day I sat cross-legged on the thin carpet of a two-room shack in a poor suburb, listening to a former colonel from the South Vietnamese army recount why he beat his eight-year-old son. The boy in question, who had purple bruises up and down his legs, sat in his father's lap and laughed delightedly as the father nuzzled him.

"We were only trying to discipline him the way we knew," the bewildered father explained to a Vietnamese-American caseworker for the Department of Children's Services, clearly mortified by the idea that he had done something wrong. "We want him to grow up to be a good American." Meanwhile the good Americans they wanted to emulate looked upon the newcomers as threats to the social order. Residents of the affluent and WASPY suburb of San Marino did not understand why the extended Chinese family that moved next door wanted to chop down the venerable oak tree that had spread its shade over the lawn for almost 100 years. Yet it never occurred to the Chinese family that their neighbors objected to their removing a tree whose proximity to the front door blocked the good energy, or ch'i, from entering and circulating throughout the house. When each side got up at the San Marino City Council to throw out terms like "owners' rights" and "environmental protection," they weren't arguing about a tree but about a way of life.

As Asian immigration radiated outward in concentric circles from Monterey Park, the culture wars moved to new staging grounds. In 1994, they hit the suburb of Temple City, where the battles grew so pitched, the fever so hysterical, that nine Asian owned bridal shops in the city became the target of unfounded rumors that they were fronts for prostitution. That year, a candidate running for the Temple City Council promised to shut down the "plague" of bridal shops if elected. He lost, but the sentiments he espoused lived on among the patrons of Pie 'n' Burger, a dwindling remnant of Americana amid a growing Asian commercial strip on Temple City Boulevard.

"They're buying us out of our community, our city, our own golf courses," complained one local white businessman over pie and coffee as others grunted in assent. "Why don't you buy my house so I can move to a white part of town?" another suggested with venom.

The next night at dinner, I sat at Tung Lai Shun, the Islamic Chinese restaurant in the San Gabriel Village Square. The place was packed and noisy, with chopsticks clicking against plates in percussive counterpoint to the boisterous conversations. The restaurant hostess wore a long white robe and a hejiba wrapped under her chin, like a nun's wimple, taking reservations on a cell phone.

Families filled big round tables. Businessmen leaned forward over smoked eels, transacting deals. I wanted to eavesdrop, the trade of all writers. But a formidable barrier separated us. My Achilles heel was this: I spoke no Chinese. I closed my eyes and tried to understand the fear that can grip people when they feel their way of life threatened, when they see their schools and neighborhoods change beyond recognition within fewer years than it takes for a child to complete elementary school. In places like San Gabriel Valley Square, the security guards were white and the patrons Asian. In places like these, I begin to understand how minorities felt each day navigating through mainstream white culture. In places like these, I realized how easy it was to lose one's moorings, to become The Other. Suddenly, I was overwhelmed by a cultural vertigo. What if I couldn't get back in my car and drive home to my own neighborhood? What if I saw the sparkling blue water of Victoria Bay in Hong Kong instead of the parking lots of San Gabriel when I opened my eyes? What if I never heard English spoken again? Would that bother me? After the initial novelty wore off, it just might. I paid my bill and went home to Silverlake.

Each night, the voices of the San Gabriel Valley replayed like a broken tape loop in my brain, clicking and whirring in a multitude of languages. They were the voices of fear, resignation and hope. A microcosm of our society. A glimpse into an unwieldy future. Soon after that, I started writing fiction.

Copyright Denise Hamilton 2001. Reprinted with the permission of Denise Hamilton.

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 Denise Hamilton at BookBrowse
Damage Control jacket Prisoner of Memory jacket Sugar Skull jacket The Jasmine Trade 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 Denise Hamilton 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

  • Michael Connelly

    Michael Connelly

    Michael Connelly decided to become a writer after discovering the books of Raymond Chandler while attending the University of Florida. Once he decided on this direction he chose a major in journalism and a minor in creative ... (more)

    If you enjoyed:
    The Jasmine Trade

    Try:
    The Narrows
    by Michael Connelly

  • Jonathan Kellerman

    Jonathan Kellerman

    Jonathan Kellerman is the #1 New York Times bestselling author of more than forty crime novels, including the Alex Delaware series, The Butcher's Theater, Billy Straight, The Conspiracy Club, Twisted, True Detectives, and The... (more)

    If you enjoyed:
    Sugar Skull

    Try:
    The Murder Book
    by Jonathan Kellerman

We recommend 5 similar authors

View all 5 Read-Alikes

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

The dirtiest book of all is the expurgated book

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 09:43 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
1780306995364 ms 1.78030699536E+012 ms 1 /root/website/app_server.cfm
281 ms 281 ms 1 /root/website/author_interviews/full/index.cfm
87 ms 87 ms 1 /root/website/app_layout.cfm
72 ms 72 ms 1 /root/website/author_interviews/full/dsp_main.cfm
69 ms 69 ms 1 /root/website/app_globals.cfm
69 ms 69 ms 1 /root/website/site/blocks/layout/dsp_right_column.cfm
54 ms 18 ms 3 /root/website/adsystem/adsystem_mod.cfm
39 ms 20 ms 2 /root/website/queries/qry_get_books_by_author_id.cfm
36 ms 36 ms 1 /root/website/adzones/AdZone6.cfm
36 ms 36 ms 1 /root/website/queries/qry_get_active_obc.cfm
25 ms 25 ms 1 /root/website/site/blocks/dsp_border_first_impressions.cfm
24 ms 24 ms 1 /root/website/queries/qry_get_arcs_for_ad.cfm
22 ms 22 ms 1 /root/website/queries/qry_get_books_by_author_id_lite.cfm
15 ms 15 ms 1 /root/website/queries/qry_get_bb_briefs_by_author.cfm
13 ms 13 ms 1 /root/website/site/blocks/layout/dsp_footer.cfm
11 ms 4 ms 3 /root/website/site/blocks/membership_advantages.cfm
10 ms 10 ms 1 /root/website/adzones/showcase_track.cfm
10 ms 3 ms 3 /root/website/queries/qry_get_member_account_types.cfm
9 ms 9 ms 1 /root/website/adzones/AdZone2.cfm
9 ms 9 ms 1 /root/website/queries/qry_get_author_readalikes_by_id.cfm
8 ms 8 ms 1 /root/website/queries/qry_get_current_competition.cfm
6 ms 6 ms 1 /root/website/site/blocks/dsp_book_giveaway.cfm
5 ms 5 ms 1 /root/website/act_check_login.cfm
4 ms 4 ms 1 /root/website/actions/adstatus.cfm
4 ms 4 ms 1 /root/website/queries/qry_get_all_books_by_author_id.cfm
3 ms 3 ms 1 /root/website/queries/qry_get_current_wordplay.cfm
3 ms 3 ms 1 /root/website/queries/qry_get_member_info.cfm
2 ms 1 ms 4 /root/website/actions/act_spider_tracker.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_free_newsletters.cfm
1 ms 1 ms 1 /root/website/site/blocks/dsp_top_author_block.cfm
1 ms 1 ms 1 /root/website/site/blocks/layout/dsp_bottom_block.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/act_libraryIPLogin.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/queries/qry_get_previous_arcs_for_ad.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
0 ms 0 ms 1 /root/website/site/blocks/layout/main_menu.cfm
0 ms 0 ms 1 /root/website/site/blocks/layout/main_search.cfm
1 ms  STARTUP, PARSING, COMPILING, LOADING, & SHUTDOWN
282 ms  TOTAL EXECUTION TIME
red = over 250 ms average execution time


SQL Queries

spidercheck (Datasource=bookbrowse_com_new, Time=1ms, Records=1) in /root/website/actions/act_spider_tracker.cfm @ 09:43:15.015
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=2ms, Records=0) in /root/website/queries/qry_get_member_info.cfm @ 09:43:15.015
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=3ms, Records=2) in /root/website/actions/adstatus.cfm @ 09:43:15.015
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 @ 09:43:15.015
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=3ms, Records=1) in /root/website/queries/qry_get_current_wordplay.cfm @ 09:43:15.015
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=3ms, Records=0) in /root/website/queries/qry_get_current_competition.cfm @ 09:43:15.015
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=4ms, Records=0) in /root/website/queries/qry_get_current_competition.cfm @ 09:43:15.015
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 @ 09:43:15.015
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=10ms, Records=0) in /root/website/queries/qry_get_active_obc.cfm @ 09:43:15.015
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=4ms, Records=1) in /root/website/queries/qry_get_active_obc.cfm @ 09:43:15.015
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=19ms, Records=4) in /root/website/queries/qry_get_active_obc.cfm @ 09:43:15.015
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=13ms, Records=2) in /root/website/queries/qry_get_books_by_author_id_lite.cfm @ 09:43:15.015
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) = 692

get_author_by_author_id (Datasource=bookbrowse_com_new, Time=7ms, Records=1) in /root/website/queries/qry_get_books_by_author_id_lite.cfm @ 09:43:15.015
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) = 692

get_all_books_by_author_id (Datasource=bookbrowse_com_new, Time=4ms, Records=4) in /root/website/queries/qry_get_all_books_by_author_id.cfm @ 09:43:15.015
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) = 692
Parameter #2(CF_SQL_INTEGER) = 692

get_bb_briefs_by_author (Datasource=bookbrowse_com_new, Time=15ms, Records=2) in /root/website/queries/qry_get_bb_briefs_by_author.cfm @ 09:43:15.015
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) = 692

get_author_readalikes_by_id (Datasource=bookbrowse_com_new, Time=7ms, Records=5) in /root/website/queries/qry_get_author_readalikes_by_id.cfm @ 09:43:15.015
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) = 692

get_ads (Datasource=bookbrowse_com_new, Time=4ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 09:43:15.015
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=2ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 09:43:15.015
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=3ms, Records=2) in /root/website/queries/qry_get_member_account_types.cfm @ 09:43:15.015
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=0ms, Records=1) in /root/website/actions/udfs.cfm @ 09:43:15.015
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) = 1236

get_book_image (Datasource=bookbrowse_com_new, Time=3ms, Records=1) in /root/website/actions/udfs.cfm @ 09:43:15.015
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) = 899

get_member_account_types (Datasource=bookbrowse_com_new, Time=2ms, Records=2) in /root/website/queries/qry_get_member_account_types.cfm @ 09:43:15.015
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=12ms, Records=9) in /root/website/queries/qry_get_books_by_author_id.cfm @ 09:43:15.015
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) = 186
Parameter #2(CF_SQL_INTEGER) = 186
Parameter #3(CF_SQL_INTEGER) = 186

get_author_by_author_id (Datasource=bookbrowse_com_new, Time=5ms, Records=1) in /root/website/queries/qry_get_books_by_author_id.cfm @ 09:43:15.015
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) = 186

get_books_by_author_id (Datasource=bookbrowse_com_new, Time=12ms, Records=4) in /root/website/queries/qry_get_books_by_author_id.cfm @ 09:43:15.015
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) = 256
Parameter #2(CF_SQL_INTEGER) = 256
Parameter #3(CF_SQL_INTEGER) = 256

get_author_by_author_id (Datasource=bookbrowse_com_new, Time=7ms, Records=1) in /root/website/queries/qry_get_books_by_author_id.cfm @ 09:43:15.015
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) = 256

get_member_account_types (Datasource=bookbrowse_com_new, Time=2ms, Records=2) in /root/website/queries/qry_get_member_account_types.cfm @ 09:43:15.015
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=12ms, Records=0) in /root/website/queries/qry_get_arcs_for_ad.cfm @ 09:43:15.015
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=11ms, Records=3) in /root/website/queries/qry_get_arcs_for_ad.cfm @ 09:43:15.015
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=15ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 09:43:15.015
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=7ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 09:43:15.015
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 @ 09:43:15.015
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=5ms, Records=1) in /root/website/site/blocks/dsp_book_giveaway.cfm @ 09:43:15.015
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=0ms, Records=4, Cached Query) in /root/website/queries/qry_get_free_newsletters.cfm @ 09:43:15.015
SELECT 	*
    FROM 	free_newsletters
get_ads (Datasource=bookbrowse_com_new, Time=3ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 09:43:15.015
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=1ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 09:43:15.015
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=1ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 09:43:15.015
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=CFGLOBALS=urltoken%3DCFID%23%3D4094124%26CFTOKEN%23%3Dab31b9f5ec3475%2D19A44441%2D9BF9%2DEB2C%2D4C50D09534F640A4%23lastvisit%3D%7Bts%20%272026%2D06%2D01%2009%3A43%3A15%27%7D%23hitcount%3D242%23timecreated%3D%7Bts%20%272026%2D06%2D01%2009%3A42%3A43%27%7D%23cftoken%3Dab31b9f5ec3475%2D19A44441%2D9BF9%2DEB2C%2D4C50D09534F640A4%23cfid%3D4094124%23; CFCLIENT_BOOKBROWSE=order%3Dp%23member%5Fnumber%3D0%23member%5Factive%5Fflag%3D0%23member%5Flogged%5Fin%5Fflag%3D0%23library%5Fuser%5Fflag%3D0%23view%3Dbooks%23; CFTOKEN=ab31b9f5ec3475-19A44441-9BF9-EB2C-4C50D09534F640A4; FREEACCESSCOUNT=0; CFID=4094124
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/692/author/denise-hamilton
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=4094124
cftoken=ab31b9f5ec3475-19A44441-9BF9-EB2C-4C50D09534F640A4
hitcount=245
lastvisit={ts '2026-06-01 09:43:15'}
library_user_flag=0
member_active_flag=0
member_logged_in_flag=0
member_number=0
order=p
timecreated={ts '2026-06-01 09:42:43'}
urltoken=CFID=4094124&CFTOKEN=ab31b9f5ec3475-19A44441-9BF9-EB2C-4C50D09534F640A4
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#=4094124&CFTOKEN#=ab31b9f5ec3475-19A44441-9BF9-EB2C-4C50D09534F640A4#lastvisit={ts '2026-06-01 09:43:15'}#hitcount=242#timecreated={ts '2026-06-01 09:42:43'}#cftoken=ab31b9f5ec3475-19A44441-9BF9-EB2C-4C50D09534F640A4#cfid=4094124#
CFID=4094124
CFTOKEN=ab31b9f5ec3475-19A44441-9BF9-EB2C-4C50D09534F640A4
FREEACCESSCOUNT=0
Session Variables:
cfid=4094124
cftoken=ab31b9f5ec3475-19A44441-9BF9-EB2C-4C50D09534F640A4
sessionid=BOOKBROWSE_4094124_ab31b9f5ec3475-19A44441-9BF9-EB2C-4C50D09534F640A4
urltoken=CFID=4094124&CFTOKEN=ab31b9f5ec3475-19A44441-9BF9-EB2C-4C50D09534F640A4
URL Parameters:
author=denise-hamilton
author_number=692
Debug Rendering Time: 9 ms