Excerpt from Mao's Last Dancer by Li Cunxin, plus links to reviews, author biography & more

Summary |  Excerpt |  Reviews |  Beyond the Book |  Readalikes |  Genres & Themes |  Author Bio

Mao's Last Dancer by Li Cunxin

Mao's Last Dancer

by Li Cunxin
  • BookBrowse Review:
  • Critics' Consensus (4):
  • Readers' Rating (33):
  • First Published:
  • Mar 1, 2004, 444 pages
  • Paperback:
  • Mar 2005, 480 pages
  • Rate this book

About this Book

Print Excerpt

Part One
My Childhood

Chapter 1

Home

My parents, as newlyweds, lived with my father's six brothers, their wives, his two sisters and their children, a total of over twenty people crammed into a six-room house. My mother was the youngest daughter-in-law, so her status in the Li family was the lowest. Family hierarchy had to be respected: she would work hard to prove her worth.

Often my mother would not see my father until late in the evenings, because he worked at two jobs, either away in the fields or carting building materials, all day long. Then the family would sit for dinner under the candlelight (there was no electricity in the village then), with men eating at one table, women and children eating at others. My parents hardly set eyes on each other during that first year of marriage. Sometimes, in the dim candlelight, my mother would even mistake one of her brothers-in-law for her own husband.

The women of the house would sew, wash, clean and cook. My mother was meticulous and efficient, and the speed and quality of her work won her mother-in-law's approval. To cook well was a sign of love and care. My mother was often the one sent to deliver the food to the men in the fields too, because of her unbound feet. Then she could see her husband in the daylight, and her sisters-in-law secretly envied her such freedom.

My mother's mother had died within the first year of my parents' marriage, so my mother would visit her father once a year with gifts and special food she cooked, even though she was never loved by her father in the same way as he loved his sons. A son could work in the fields. A son could bring home a daughter-in-law. A son could carry on the family line. To fail to have a son was considered the greatest betrayal of one's ancestors.

The people who lived in the New Village had been forced to move there during the Second World War from another village about twenty miles north. The Japanese had occupied Qingdao and built an airport where my father's family used to live. The New Village was still small then, with just over three hundred and fifty families, a two-roomed office and an open square. Later, loudspeakers, from which Mao's official revolutionary doctrines were broadcast, would hang from poles or sit on people's rooftops. The houses were attached to each other in long rows with a gap of about four feet between each row.

My parents continued to share a house with my father's family--as the family grew and more children arrived, they simply built more adjoining rooms. Their first son had arrived about a year after their marriage, their second just over two years later, their third two years after that, and then their fourth, Cunsang, in 1955. But Cunsang was lucky to have survived his first week in the Li family. When he was only a few days old, there was an accident. Two of the bigger brothers were playing, stacking up chairs, and the chairs crashed down upon Cunsang's head. He started having seizures. My mother took him immediately to the hospital where the doctor told her that he most likely had brain damage, but was too young to have any treatment. All my mother could do was take him home.

For several days he did not feed, he cried nonstop and the seizures continued. Finally, in desperation, my mother wrapped him in a little handmade blanket, took him out into the snow, and left him on the Northern Hill, close by our village. She thought somebody with magic power might save him. She cried all the way home.

My father's mother, Na-na, came by later to check on her new grandson. Na-na was a kind, tiny little woman. When she found the baby missing, she begged my crying mother to tell her where he was. Eventually she did, and Na-na rushed on her crippled, bound feet to the Northern Hill. She found Cunsang and took him home. He was blue all over, nearly frozen to death, and had a severe fever for several days. But then, miraculously, Cunsang stopped crying. The seizures ended and he seemed to recover. He too grew up with the rest of his brothers in that crowded house, and my mother eventually came to be known as "that lucky woman with seven sons."

My family's house looked into the back of someone else's house, and that house looked directly into theirs. It had a small front courtyard which was enclosed, in years to come, by six-foot stone walls. People with money had the stones delivered and secured with mortar, but my family was too poor, so my father and some of the older sons went to the mountains to bring those stones back themselves, by horse and cart. You could see through the holes in the wall and spy on the neighbors, and once part of the wall fell apart.

My family's property had no backyard. The house itself was built with big stones and bricks, with German-style terra-cotta tiles, made locally. Inside, my parents and their sons had four rooms: two small bedrooms about eight feet square, a slightly larger bedroom about ten feet square and the kitchen-cum-living-room, which was about the same size as the larger bedroom. It had two built-in woks with big wind boxes attached to make fire. Those woks occupied three-quarters of the space in that room. Crockery cupboards were built into the walls, and a small freestanding wooden pantry, made by my father, stood in one corner. There was no refrigeration and no running water, only a huge clay pot for storing drinking water. If both woks were in use at the same time, there would be no space for people to pass through that room without having to move aside whoever was operating the wind box.

The woks backed onto the bedroom walls, which were covered with newspaper "wallpaper," and which contained the chimneys. Fire and smoke would travel through under the mud-brick beds and escape through the walls on the other side. The mudbricks were supposed to retain heat, but they were not very effective: as the night wore on the beds became colder.

The floor was a reddish earth. During the wet weather, water always seeped through the earth and my father would have to take out the wet floor and wait for a dry day to replace it, every inch with new earth, pounding it down with a huge wooden hammer. The harder the floor, the less chance there was for the water to penetrate.

There were no wardrobes in the house. Clothes were stored in papier-mâché boxes my mother made, stacked on the two small beds during the day and moved onto the floor at night. There was also a main bed about the size of a small double bed, and eventually my parents and all their sons had to share those three beds. The main bedroom was also the room where my family ate, and the only room with an attic: it was my father's secret hiding place for important things like money. Others were forbidden to go there.

After waking each morning on the freezing beds, everyone would fold the blankets into rolls and tuck them neatly away. What remained was a bamboo mat. A wooden tray about two by four feet, passed down from my father's ancestors, would be placed on top of the mat and the family would sit around it, cross-legged, knee to knee, to eat each meal. Three of the older sons had to sit on wooden stools by the edge of the bed because there wasn't enough room around the tray for everyone.

My family had to go to one of the village wells to fetch water, carrying it back in two buckets that hung from either end of a bamboo pole balanced across the shoulders. The adults and the big boys would carry big buckets, and the little boys had smaller buckets. Water was heated in the big wok, and wooden or clay basins about three feet wide and a foot deep were used for baths. There was one public bath in the commune shared by over ten thousand people, which my family couldn't afford, and no bathroom in the house, only a toilet, which was a hole in the ground in the front courtyard. You had to stand or crouch on two wooden boards, one on each side of the hole. There was no roof, so it was freezing cold in the winter. Half of the toilet was inside the wall, and half outside, to allow the lowest class of laborer in the village to collect the waste, which was used in the fields as fertilizer. He'd use a wooden spoonlike scooper and pour the waste into two wooden barrels that sat on each side of his wheelbarrow. The shit man pushed his wheelbarrow through the narrow streets every day, and if people were coming toward him, they'd move aside and allow him to pass. One day the shit man had a collision with a bicycle. The foul contents of the wheelbarrow ran all over the street. What a smell! Even after the neighbors washed the shitty area over and over with water, the dreadful smell remained and everyone avoided that street for a long time. Neighbors complained to the head of the village and tried to have the shit man replaced, but no one else wanted to be the next shit man.

My family had to utilize every inch of their front yard. There was a small vegetable patch, climbing beans on the stone walls, and a pigsty with a couple of pigs, but there was never enough food to feed the people, let alone the pigs, so the pigs were always very thin. Eventually they were sold to the commune. There was also a chicken yard, but again, the chickens never received enough food to produce many eggs, and the few they did lay were sold in the market for badly needed cash.

The commune allocated each family in the village a piece of land. My family's was one twentieth of an acre, halfway up the Northern Hill, about fifteen minutes from home. It was so small that it could only be used to grow essential foods, such as corn and yams. On Sundays, which was the only day my father could spend at home, the entire family, including the children, worked on this land with him. All the land in Li Commune was divided into small, stepped terraces, and everything was done by hand using shovels, picks, hoes, sickles and plows. At one stage the village had the luxury of two old, starved oxen, which were used for plowing, but they were slow and often refused to walk, despite constant whipping. They too eventually died, one after the other.

My mother's earnings, as with all the peasants', depended on the weather and luck. They had no say in what to plant: the central government in Beijing decided that. My family planted mainly wheat in the winter, corn, yams and sorghum the rest of the year. The government would get the first and biggest portion, at the government-set price, and the rest was divided among the peasants according to the number of members in each family and how many points the family earned during the year. This apportioned food would be counted against your earnings at the end of that year. Every day, the head of each working group in the village would register who worked and for how many hours. Then, at the end of each month, all the peasants would gather and decide how many points each person was entitled to. The most a man could earn in a single day was ten points, which was about one yuan or roughly seventeen U.S. cents then. Women normally received about half of a man's earnings.

One year, there was a severe drought and nobody was paid a single yuan for a whole year. The village had to borrow some money from the Qingdao government to lend every family so they could buy food to survive. It took the people in the village more than two years to repay that loan, and still the peasants had to eat anything that moved, and some things that didn't. Often they couldn't even find any bark to eat.

My family was very poor, but there were even poorer people than the Li family in our commune. By the time I was born there was deprivation and disease everywhere. Three years of Mao's Great Leap Forward and three years of bad weather had resulted in one of the greatest famines the world had ever seen. Nearly thirty million people died. And my parents, like everyone else, were desperately fighting for survival.

I was my parents' sixth son. I was born on 26 January 1961. By then my parents had been married for fifteen years, and the Li family had grown to become a large extended family. Our na-na, my father's mother, lived next door, and his fourth brother (we called him Fourth Uncle) lived next to her. Our third uncle's family lived in front of us, but he died of an unknown disease in his early thirties and left four young girls and a boy. My father, whom we called Dia, and our fourth uncle became their de facto fathers.

It's a Chinese custom that the mother stays in bed for a month after giving birth. Their babies are delivered at home by a local midwife. To get out of bed and work before the month's end was supposed to be bad for the mother's health, and it could do unthinkable harm in her later years. But I was born just twenty days before the Chinese New Year, and this was the busiest time of the year for my mother, my niang. Because of my birth she was far behind in her preparations for the feast. She had no daughter to help her. Our na-na tried to help, but she had bound feet. So my niang didn't have the luxury of staying on her kang for that first month.

My life began with near tragedy for my parents. When I was just fifteen days old, my niang left me on our kang and wrapped me in a cotton quilt before going to the kitchen to make her bread rolls for the Chinese New Year. Mothers in China always wrapped their babies' arms tightly against their bodies and laid them facing up, so the baby's head would grow to the normal shape. That day my niang had so many rolls to steam that the kang where I was lying got boiling hot. I was probably suffocating in the tightly wrapped quilt. I struggled my right arm loose, and the kang badly burned the middle of my arm.

When my niang first heard my screams, she thought I was crying for milk. She had none left in her breasts, so at first she did not respond. By the time she came to check on me, the whole elbow area of my right arm was severely burned and blistered.

The burn quickly became infected. Two days later, my entire right arm had swollen up and turned bright red. My parents had no appropriate medication. They could not afford to take me to the hospital. The burned area gradually became full of pus, and I developed a dangerously high fever. I screamed constantly day and night.

They finally had to borrow some money from our relatives and friends to take me to the hospital. "Your son has a severe infection," the doctor informed my parents. "He is too young to take any medication. You should have come earlier. Your only alternative is to apply some herbal medicine. But I can't guarantee this will work."

"What will happen if it doesn't work?" my niang asked, desperately afraid.

"He may lose his right arm. As soon as you see the infection spread, bring him in and we will have no choice but to cut his arm off," he replied.

My parents looked at their tiny son and couldn't believe that he might grow up with only one arm. My niang's guilt was beyond description. My dia kept telling her that there would be a cure somewhere. They took the doctor's prescription and purchased the herbs from a local medicine shop. My niang followed the doctor's instructions and stewed the herbal ingredients in the wok. They applied the dark liquid to my arm. It didn't help. It made the infection worse, and the redness began to travel away from my arm.

My niang started to panic. She took me to see many healers who lived in our area and tried their different secret family recipes, to no avail. Then my fourth aunt said to my niang, "An old healer told my mother once that bai fang helps infections. Why don't you try it?" Bai fang was a meat tenderizer that looked like white rock salt. It was full of acid. At first my niang didn't take the suggestion seriously, but with all other options exhausted she decided to give it a try.

When she first applied the bai fang I screamed like a stuck pig. She couldn't bear to see her son suffering such pain and she seriously doubted whether a meat tenderizer would ever work, so after a few tries she stopped the treatment.

But my fourth aunt believed strongly it would work. "Ni tai sin yuen la!" You are too soft-hearted, she said to my niang. She locked her door, crushed the bai fang into a powder and rubbed massive amounts onto my raw, exposed muscles. She was literally rubbing salt into an open wound. I screamed nonstop the whole day. Every hour she would wash my arm with warm water and reapply masses of bai fang.

Years later my niang confessed, "I was outside your fourth aunt's door and my heart bled each time you screamed. The sound of your cries was like a thousand sharp knives cutting into my guilty heart! Several times I banged on your fourth aunt's door, trying to take you away. Thank the gods for your fourth aunt's determination. She just ignored me."

My fourth aunt wasn't really sure whether this bai fang would work either. She nearly gave up many times that day. But she knew this was the last chance they had to save my arm.

By the end of that day I had lost my voice completely from screaming. But my aunt's determination saved my arm. The infection slowly went away. A large scar remained, and in years to come, in moments of crisis, I would always touch it. It would become my link to my niang and a reminder of her love.

Three years later, my niang gave birth to her seventh son, my youngest brother, Cungui, who we called by his nickname Jing Tring. My parents knew they couldn't provide enough food to feed the sons they now had, and as far as I can remember there was never enough food. Meat, seafood and eggs were all on a strict quota system, along with oil, soy sauce, sugar, salt, wheat and corn flour, rice and also coal. Every family was allocated a very small quantity of these items each month, but often they were not available at all.

We ate a lot of dried yams. They were the easiest things to grow, so most of our land was used for yams. I was often woken up at five o'clock in the morning by my niang to go to the yam fields with my big brothers before they started school for the day. We each carried a shovel and a bamboo basket made by our dia, to dig for any yams that might have been overlooked by the peasants during harvesting. We were cold and hungry but the hope of those yams for breakfast always kept us going. Often the fields had already been turned over by others in equally desperate circumstances, and we returned home with empty baskets.

During summer, every family's front yard and roof were covered with slices of these yams drying in the sun. They looked like snowflakes. Some people even laid them out on the street. But if rain came, you had to quickly pick them all up, for if they got wet they soon went moldy. Once they were dried, the sliced yams would be stored in a huge clay pot in my older brothers' bedroom or in our dia's attic.

Dried yams were our basic food for most of the year. We occasionally had flour and corn bread for a treat, but those were my niang's special reserves for relatives or important visitors. We had dried yams, steamed or boiled, almost daily, week after week, month after month and year after year. Dried yams were the most hated food in my family, but there were others in the commune that could not even afford dried yams. We were luckier than most. We were luckier than the thirty million who starved to death. Dried yams saved our lives.

One year, I remember that our commune experimented with growing peanuts on a few small pieces of land, but it was a disappointingly meager crop. After the peanut field had been harvested, a group of boys my age, about five or six years old, followed some of the older boys with spades and bamboo baskets, trying to find peanuts in the ground that, like the yams, might have been missed by others. None of us found many peanuts after hours of earth churning, but on the edge of the field one of the boys discovered a rat hole, a lucky find for starving boys! He immediately started digging. We gathered around him as if he were a magnet: rats always stored food for winter, so we were all excited and envious of the boy's find. We knew not to kneel by the rat hole because local superstition told us that if we did the rat tunnel would disappear. So the boy dug as fast as he could, with his ass in the air. Several times he nearly lost the tunnel because the rats tried to block it. Then he found that it branched out in different directions, and soon he discovered three stores: one of peeled peanuts, one of half-peeled and the third of unpeeled peanuts. We never saw the rats; we thought they had a secret escape route.

That lucky boy gathered almost half a basketful of peanuts, but secretly I felt sad for the rats, losing their food like that. They too might die of starvation that winter. What a cruel world, I thought, where we had to compete with the rats for food.

Mealtimes in my family were always sad for my niang. There was often nothing for her to cook. We would look at what little food there was on the wooden tray and, out of respect for our elders, always wait for our dia to start. One day, when my niang served dinner, it was clear there was not enough food for everyone.

"I don't feel hungry," our dia said casually. "I had a rather big lunch today. You all go ahead."

Each of us had our chopsticks in hand, ready to swarm on the food. But we hesitated. Our niang was next in line. She quickly gave our dia an annoyed look and made "zhi, zhi, zhi" sounds with her tongue. "Don't you dare not eat! Your health is our entire family's security. We will all only be drinking water if you starve yourself to death!"

"I really mean it. I'm not hungry," our dia protested innocently.

"Don't annoy me, you liar!" our niang admonished, and she picked some food up with her chopsticks and put it in our dia's bowl. We started to eat only once he took the first bite. Our parents always ate their food slowly to allow us more food. On many occasions our niang told us to leave the best food for our dia because he was our main breadwinner. But our dia always made excuses and told us we should give the best food to our niang: if not for her we would all have only "northwest wind" for dinner.

We rarely ate meat. Once a month we would wait in long lines at the market for the fattest piece of pork available. Our niang would extract lard from it to use for cooking later, but everyone else wanted the fat pork too, so we didn't get it very often.

One afternoon, my niang heard that the meat shop in our commune was selling pork, but only for a few hours. She borrowed one yuan from my fourth aunt and told me to run to the meat shop as fast as I could in case they ran out, which they often did. It was a good half hour away. There were three long lines of people waiting by the time I arrived. An hour later I handed the cashier my money and our ration card, and I was given a small piece of fatty pork. I was so excited! I knew my niang would be happy with such a fatty piece.

She was ecstatic. She immediately cut the pork into small pieces and started to cook them to extract the lard. I was her wind-box pusher. The delicious fragrance and the sound of sizzling pork made my tummy rumble. She was in high spirits. "What a good piece of pork! This amount of lard will last us a while," she said, and handed me a bowl with a small piece of pork crackling in it. "Don't burn your tongue," she warned. The crackling melted in my mouth--nothing in the world could taste as good.

My niang also cut up a cabbage to cook. "This will be a nice surprise for your dia!"

That night, when the cabbage dish was served, we could actually see the traces of precious oil floating in the sauce! My second brother found a small piece of pork in the cabbage too, and put it into our dia's bowl. Our dia immediately passed it to our niang. Our niang passed it back to him. "Don't be silly!" she said. "I especially cooked this for you. You need it for your strength at work."

My youngest brother was sitting next to our dia. Our dia turned to him and said, "Jing Tring, let me see your teeth." Before our niang could say anything, he put that piece of pork into my brother's mouth. There was silence, and a long, sad sigh from our niang.

It was always like this. Often a small piece of meat in a vegetable dish would be passed from person to person because it was so scarce. Seven pairs of hungry eyes would look at our parents, begging for more. But no begging words were ever spoken because we all knew how difficult it was to get any food at all. There was simply nothing more to cook. My parents didn't know where the food for our next meal would be coming from.

To survive, my niang worked every spare hour she had in the fields, as well as cooking and looking after her boys. She cooked three meals a day, every day. We never dreamed of going to a restaurant. There was only one restaurant in our area anyway, and it mainly served the government officials. Often my niang had to bury her pride and borrow food from relatives or neighbors. She was an extremely resourceful cook and could make delicious dishes from anything, except dried yams. I hoped never to see another piece of dried yam as long as I lived. They looked whitish before cooking and turned pale gray afterwards. They had no taste and stuck in our throats, so we normally had a bowl of hot water to help get them down, or if we were lucky we would get a bowl of watery rice, wheat or corn congee. Congee is like thin porridge, with very few grains in it.

I loved watching my niang cook while I pushed the wind box. This was a special time for me. I could talk to her alone then, and have a little bit of undivided attention. I was her favorite wind-box pusher, the fastest among my brothers to make the fire. I was also the most patient. My joy and sadness fluctuated along with my niang's. She would be in such a happy mood when she had oil, seafood or especially if she had a piece of pork. I would ask her many questions about the cooking, and I learned when to add certain spices and how to be a good cook.

Food wasn't our only problem of course. Even the water we used had to be boiled. We were not allowed to drink unboiled water. We were told that unboiled water from the village wells could give us worms. My brothers and I all had worms many times throughout our childhood. We would get knotted stomachs and bad pains, and our parents would wake us up and give us some sweet medicine to chew. We called them "the vomitable worm killers." They came in the form of candies shaped like miniature pyramids. The first taste was bearable, with some sweetness, but after five of them I wanted to vomit. And I was only halfway there: I had to eat ten of them! My poor older brothers suffered even more, because the older you were the more worm killers you had to chew. We took them at night while our stomachs were empty and the worms had nothing to eat except the vomitable worm killers. After that, for the next few days, we had to be on a strict diet of warm food, warm water, no sweet, salty or oily food, and no seafood. That meant only one thing-dried yams, meal after meal. Sometimes the worms didn't come out for days and we had to repeat the whole process. Most of the time the worms came out still alive, usually many of them and all about a foot long. The older brothers hated their younger brothers for this horrible ordeal because we, most likely, caused the annual drama by not washing our hands regularly. They had no choice but to go through this process each year.

But despite our poverty, our parents always taught us to have dignity, honesty and pride. Never to steal or do things that would harm others. Our good family name was most sacred and should be protected with all our might.

I tested this one day when I was playing at a friend's house. I was about five. Sien Yu was the same age, and his uncle, who lived in the city, had brought him a small toy car when he'd visited the day before. It was the first time I had ever seen a toy car. I had never seen anything more beautiful in my life! Sien Yu let me play with it for a while. I loved it so much. When he went inside to get a drink, I took it and ran home.

"Where did you get that?" my niang asked suspiciously.

"I...I found it on the street."

She knew I was not telling the truth. No one in our area could afford to spend money on a toy. "Who did you just play with?"

"Sien Yu," I replied.

She took my hands firmly and pulled me back to Sien Yu's house. She said to his mother, "Sien Yu's niang, is this your son's toy car?"

Sien Yu's mother nodded.

"I'm sorry, I think my son has stolen your son's toy car," my niang said.

"Don't get upset," Sien Yu's mother replied. "Your son is too young to understand."

"I'm ashamed, I'm ashamed of what my son did!" said my niang, and apologized profusely. She tried to make me do the same, but I felt too embarrassed and refused, and wished I had never seen that toy car. I wished for a hole in which to hide. I wished for thick skin to cover my face. I felt the blood rushing to my neck. I tried to escape from my niang's firm grip. I wanted to run away and never come near Sien Yu's house again. I hated my niang for embarrassing me like this. She shouted. She wanted the entire world to know I had stolen my friend's toy car. I screamed and kicked as she dragged me home. "I want a car! I want a car!" I yelled.

As soon as we went inside our house, with despair in her eyes, she pulled me to her chest, hugged me tightly in her arms and sobbed. It was as though she had suffered as much humiliation as I had. "I'm so sorry to do this to you," she whispered tenderly. "I'm so sorry we are too poor to buy you a toy car." After a brief moment she continued. "I'm too stupid to have all of you in this cruel world! You don't deserve this suffering!" I felt her tears streaming onto my hair. "We are too poor! The gods in heaven won't answer our prayers, and even the devil below has abandoned us. We are born with a hopeless fate," she sighed.

"Stop saying that! Don't say anything!" I begged her. I hated to see her so sad.

She continued as though she hadn't heard me. "How I wish I had the money to buy you a toy car! But we don't even have enough money for food."

"I'll have enough food for you one day! I swear!" I said to myself.

She hugged me tighter as she sobbed. I didn't know how long she hugged me, but I didn't want her to stop.

That evening, at dinner, after she had told everyone what I had done, my dia started lecturing us. "Although we have no money, no food, and can't buy clothes, and although we live in a poor house, one thing we do have is PRIDE. Pride is the most precious thing in our lives. Throughout our forefathers' struggles, the Li family always had our pride and dignity. We have always had a good reputation. I want every one of you to remember this: never lose your pride and dignity no matter how hard life is."

From Mao's Last Dancer by Li Cunxin, Copyright © 2003 Li Cuxin, published by G.P. Putnam's Sons, a member of Penguin Group (USA) Inc., all rights reserved, reprinted with permission from the publisher.

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

Our wisdom comes from our experience, and our experience comes from our foolishness

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 /excerpts/index.cfm
Time Stamp 01-Jun-26 03:35 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
1780284923072 ms 1.78028492307E+012 ms 1 /root/website/app_server.cfm
663 ms 663 ms 1 /root/website/excerpts/index.cfm
146 ms 146 ms 1 /root/website/queries/qry_get_book_by_id.cfm
110 ms 110 ms 1 /root/website/app_globals.cfm
102 ms 102 ms 1 /root/website/app_layout.cfm
90 ms 90 ms 1 /root/website/queries/qry_get_discussion_by_id.cfm
65 ms 65 ms 1 /root/website/site/blocks/layout/dsp_right_column.cfm
56 ms 28 ms 2 /root/website/adsystem/adsystem_mod.cfm
52 ms 52 ms 1 /root/website/queries/qry_get_ezine_by_book_id.cfm
45 ms 45 ms 1 /root/website/queries/qry_get_free_flag_by_book_id.cfm
40 ms 40 ms 1 /root/website/queries/qry_get_active_obc.cfm
39 ms 39 ms 1 /root/website/queries/qry_get_liked_by_book_id.cfm
38 ms 38 ms 1 /root/website/queries/qry_get_reader_reviews_by_book_id.cfm
30 ms 30 ms 1 /root/website/site/blocks/layout/dsp_footer.cfm
28 ms 28 ms 1 /root/website/adzones/AdZone6.cfm
28 ms 28 ms 1 /root/website/adzones/showcase_track.cfm
24 ms 24 ms 1 /root/website/excerpts/dsp_main.cfm
18 ms 18 ms 1 /root/website/site/blocks/dsp_border_first_impressions.cfm
17 ms 17 ms 1 /root/website/queries/qry_get_arcs_for_ad.cfm
16 ms 16 ms 1 /root/website/site/blocks/dsp_top_book_block.cfm
15 ms 15 ms 1 /root/website/queries/qry_get_current_competition.cfm
15 ms 15 ms 1 /root/website/site/blocks/dsp_book_giveaway.cfm
13 ms 13 ms 1 /root/website/actions/adstatus.cfm
13 ms 13 ms 1 /root/website/queries/qry_get_current_wordplay.cfm
8 ms 3 ms 3 /root/website/actions/act_spider_tracker.cfm
5 ms 5 ms 1 /root/website/act_check_login.cfm
5 ms 5 ms 1 /root/website/queries/qry_get_member_info.cfm
4 ms 4 ms 1 /root/website/queries/qry_get_book_awards_by_book_id.cfm
4 ms 4 ms 1 /root/website/queries/qry_get_current_ezine.cfm
4 ms 4 ms 1 /root/website/queries/qry_get_member_account_types.cfm
4 ms 4 ms 1 /root/website/site/blocks/membership_advantages.cfm
3 ms 3 ms 1 /root/website/site/blocks/layout/dsp_header.cfm
2 ms 2 ms 1 /root/website/queries/qry_get_categories_by_book_id.cfm
1 ms 1 ms 1 /root/website/queries/qry_get_free_newsletters.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
1 ms 1 ms 1 /root/website/site/blocks/layout/main_menu.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/act_book_view_tracking.cfm
0 ms 0 ms 1 /root/website/site/blocks/dsp_border_booktalk.cfm
0 ms 0 ms 1 /root/website/site/blocks/dsp_closed_awards.cfm
0 ms 0 ms 1 /root/website/site/blocks/dsp_closed_btb.cfm
0 ms 0 ms 1 /root/website/site/blocks/dsp_closed_readalikes.cfm
0 ms 0 ms 1 /root/website/site/blocks/dsp_closed_reviews.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_search.cfm
2 ms  STARTUP, PARSING, COMPILING, LOADING, & SHUTDOWN
665 ms  TOTAL EXECUTION TIME
red = over 250 ms average execution time


Exceptions

03:35:23.023 - Expression Exception - in /root/website/site/blocks/dsp_top_book_block.cfm : line 237
	    Variable BOOK_NUMBER is undefined.
	    


SQL Queries

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

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

get_reader_reviews_by_book_id (Datasource=bookbrowse_com_new, Time=37ms, Records=28) in /root/website/queries/qry_get_reader_reviews_by_book_id.cfm @ 03:35:23.023
select 		a.reader_review_number, a.book_number, a.reader_review_approved_flag, a.reader_review_dt,
				COALESCE(NULLIF(LTRIM(RTRIM(m.discourse_username)), ''), NULLIF(LTRIM(RTRIM(a.reader_review_reviewer_name)), '')) AS reader_review_reviewer_name,
				a.reader_review_reviewer_email_address, a.reader_review_reviewer_from_locale, a.reader_review_recommended, a.reader_review_rating, a.reader_review_title, a.reader_review_description, ISNULL(a.like_count, 0) AS like_count,
    			b.book_title,
    			ISNULL(e.edit_count, 0) AS edit_count,
    			e.last_edit_dt,
    			a.member_number AS review_member_number
    from 		reader_reviews a
    LEFT OUTER JOIN (
    	SELECT reader_review_number, COUNT(*) AS edit_count, MAX(edited_dt) AS last_edit_dt
    	FROM   reader_review_edits
    	GROUP BY reader_review_number
    ) e ON e.reader_review_number = a.reader_review_number
    LEFT OUTER JOIN members m ON m.member_number = a.member_number,
    			books b
    where 		a.book_number IN (select distinct c.book_number from categories a, category_book_mapping b, book_author_mapping c where a.category_number = b.category_number and a.category_active_flag = 1 and b.book_number = c.book_number)
    and 		a.book_number = ?
    and 		a.reader_review_approved_flag = 1
    and 		a.book_number = b.book_number
    

    order by a.reader_review_dt DESC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 1388

get_book_awards_by_book_id (Datasource=bookbrowse_com_new, Time=2ms, Records=0) in /root/website/queries/qry_get_book_awards_by_book_id.cfm @ 03:35:23.023
select 		c.book_awards_category_number, c.book_awards_category_name, c.book_awards_category_sort_order,
				m.book_awards_mapping_number, m.book_award_dt,
                a.book_award_number, a.book_award_image, a.book_award_name
                
                
	from 		book_awards_mapping m
	inner join 	book_awards_category c on c.book_awards_category_number = m.book_awards_category_number
    inner join	book_awards a on a.book_award_number = c.book_award_number
    
	where 		m.book_number = ?
    
    order by	c.book_awards_category_sort_order ASC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 1388

get_bb_runner_ups (Datasource=bookbrowse_com_new, Time=2ms, Records=0) in /root/website/queries/qry_get_book_awards_by_book_id.cfm @ 03:35:23.023
select	book_number
    
    from	category_book_mapping a, categories b, top_categories t
    
    where	t.top_category_number = b.top_category_number
    and		b.category_number = a.category_number
    and		t.top_category_number = 9
    and		a.book_number = ?
    and		b.category_visible_flag = 1
	and		a.book_number not in (	select book_number 
    									from 		book_awards_mapping m
													inner join 	book_awards_category c on c.book_awards_category_number = m.book_awards_category_number
    												inner join	book_awards a on a.book_award_number = c.book_award_number
                                    	where m.book_number = ? 
                                    	and a.book_award_number = 7)
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 1388
Parameter #2(CF_SQL_INTEGER) = 1388

get_liked_by_book_id (Datasource=bookbrowse_com_new, Time=38ms, Records=7) in /root/website/queries/qry_get_liked_by_book_id.cfm @ 03:35:23.023
SELECT 		b.book_title, b.book_number,
    			c.book_title "referenced_book_title", c.book_number AS "liked_book_number", c.book_short_summary as "liked_short_summary",
            	e.*,
                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 "author_name",
				(select top 1 edition_publish_dt from editions where editions.book_number = c.book_number order by edition_publish_dt DESC) as 'sortdate',
				(select count(*) from book_author_mapping m where m.author_number = d.author_number)
				+
				(select count(*) from ezine_previews where ezine_preview_bb_author_link = d.author_number and ezine_preview_bb_link =0)
				 as 'liked_author_bookcount'
                
	FROM 		liked a
	INNER JOIN	books b ON b.book_number = a.book_number
	INNER JOIN	books c ON c.book_number = a.liked_book_number
	INNER JOIN	book_author_mapping d ON c.book_number = d.book_number
	INNER JOIN	authors e ON d.author_number = e.author_number
    
    WHERE 		a.book_number = ?
    
	ORDER BY 	sortdate desc, c.book_title
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 1388

get_categories_by_book_id (Datasource=bookbrowse_com_new, Time=2ms, Records=8) in /root/website/queries/qry_get_categories_by_book_id.cfm @ 03:35:23.023
select 		distinct a.category_number, a.top_category_number, a.category_name, a.category_description, a.category_meta_keywords, a.category_active_flag, a.category_visible_flag, a.category_member_only_flag, a.category_qry_template, a.category_sort_order, a.category_tag_size,
    			b.*
	
    from 		categories a
	left join	top_categories b on a.top_category_number = b.top_category_number
	left join	category_book_mapping c on c.category_number = a.category_number
	
    where 		a.category_active_flag = 1
    and 		a.category_visible_flag = 1
	and 		c.book_number = ?
	

    order by 	b.top_category_sort_order, b.top_category_name, a.category_sort_order, a.category_name
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 1388

bb_review (Datasource=, Time=1ms, Records=1) in /root/website/excerpts/index.cfm @ 03:35:23.023
SELECT media_review, reviewer_number from get_media_reviews_by_book_id where media_review_type_number = 9
get_arc_idfk (Datasource=bookbrowse_com_new, Time=4ms, Records=0) in /root/website/queries/qry_get_discussion_by_id.cfm @ 03:35:23.023
SELECT 		a.arc_forumidfk,a.discourse_flag
    FROM 		arcs a
    INNER JOIN 	ezine_previews e on e.ezine_preview_number = a.ezine_preview_number
    
	
        WHERE 		e.ezine_preview_bb_link = ? 
    AND DATALENGTH(a.arc_forumidfk) > 0 AND arc_obc_flag=1
Query Parameter Value(s) -
Parameter #1(cf_sql_integer) = 1388

get_arc_idfk_legacy (Datasource=bookbrowse_com_new, Time=2ms, Records=0) in /root/website/queries/qry_get_discussion_by_id.cfm @ 03:35:23.023
SELECT 		a.arc_forumidfk,a.discourse_flag
    FROM 		arcs a
    INNER JOIN 	ezine_previews e on e.ezine_preview_number = a.ezine_preview_number
    
	
        WHERE 		e.ezine_preview_bb_link = ? 
    AND DATALENGTH(a.arc_forumidfk) > 0 AND arc_obc_flag=1 AND a.discourse_flag = 0
Query Parameter Value(s) -
Parameter #1(cf_sql_integer) = 1388

obc_discussions (Datasource=booktalk_new, Time=66ms, Records=0) in /root/website/queries/qry_get_discussion_by_id.cfm @ 03:35:23.023
SELECT 		t.name,
                m.title, m.body,
                u.username, t.id,
				(SELECT COUNT(*) from booktalk_messages where threadidfk = t.id) AS	"responses"
                
    FROM 		booktalk_forums f
    INNER JOIN	booktalk_threads t on t.forumidfk = f.id
    INNER JOIN	booktalk_messages m on m.posted = t.lastpostcreated
    INNER JOIN	booktalk_users u on u.id = m.useridfk
    
    WHERE 	f.id = ?
    AND 	f.active = 1
	AND		t.active = 1
    
    ORDER BY t.name, t.messages DESC
Query Parameter Value(s) -
Parameter #1(cf_sql_varchar) =

searchResults (Datasource=bookbrowse_com_new, Time=16ms, Records=0) in /root/website/queries/qry_get_discussion_by_id.cfm @ 03:35:23.023
SELECT book_number, post_id, topic_id, blurb, username, topic_title
					FROM DiscourseSearchResults
					
        WHERE 		book_number = ? 
                    AND topic_id IS NOT NULL
Query Parameter Value(s) -
Parameter #1(cf_sql_varchar) = 1388

get_ezine_type (Datasource=bookbrowse_com_new, Time=2ms, Records=1) in /root/website/queries/qry_get_ezine_by_book_id.cfm @ 03:35:23.023
SELECT a.ezine_type_number
	FROM ezines a
	WHERE a.ezine_number = 1
get_ezine_by_book_id (Datasource=bookbrowse_com_new, Time=49ms, Records=1) in /root/website/queries/qry_get_ezine_by_book_id.cfm @ 03:35:23.023
SELECT TOP 1  
                a.ezine_short_title, a. ezine_boxed_content_title, a.ezine_boxed_content, a.ezine_review, a.ezine_review_2,
                b.edition_paperback_flag, b.edition_publish_dt, b.edition_isbn,
                c.book_title, c.book_sub_title, c.book_reading_guide, c.book_excerpt, c.book_number,
                e.author_first_name, e.author_middle_initial, e.author_last_name, e.author_number, 
                f.author_info_biography, 
                g.ezine_number, g.ezine_dt, g.ezine_bbsays_flag,
				i.article_category_number, i.article_category_name
		
	FROM    	ezine_edition_mapping AS a 
		
	INNER JOIN 	editions AS b ON (a.edition_number = b.edition_number)
	INNER JOIN 	books AS c ON (b.book_number = c.book_number )
	INNER JOIN 	book_author_mapping AS d ON (c.book_number = d.book_number )
	INNER JOIN 	authors AS e ON (d.author_number = e.author_number )
	INNER JOIN 	author_info AS f ON (e.author_number = f.author_number)
	INNER JOIN 	ezines AS g ON (a.ezine_number = g.ezine_number)
	LEFT JOIN	article_ezine_edition_mapping h ON h.ezine_edition_mapping_number = a.ezine_edition_mapping_number
	LEFT JOIN	article_categories i ON i.article_category_number = h.article_category_number

	WHERE		c.book_number = ?
	AND			g.ezine_bbsays_flag = 1
	AND			g.ezine_active_flag = 1
	
	
	ORDER BY 		g.ezine_dt DESC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 1388

check_permalink (Datasource=bookbrowse_com_new, Time=11ms, Records=1) in /root/website/queries/qry_get_free_flag_by_book_id.cfm @ 03:35:23.023
SELECT 	count(*) as "count"
    FROM 	books
    WHERE 	book_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 0

check_editors_choice (Datasource=bookbrowse_com_new, Time=10ms, Records=1) in /root/website/queries/qry_get_free_flag_by_book_id.cfm @ 03:35:23.023
SELECT 	count(*) as "count"
    FROM 	books
    WHERE 	book_number = ?
    AND		book_number IN (SELECT		top 4 a.book_number
                            FROM		editors_choice a 
                            WHERE		editors_choice_dt < getdate()
                            ORDER BY	editors_choice_dt DESC)
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 1388

check_free_ezine (Datasource=bookbrowse_com_new, Time=10ms, Records=1) in /root/website/queries/qry_get_free_flag_by_book_id.cfm @ 03:35:23.023
SELECT 		count(*) as "count"
    FROM    	ezine_edition_mapping AS a
    INNER JOIN 	ezines b ON b.ezine_number = a.ezine_number
    INNER JOIN	editions c ON c.edition_number = a.edition_number
    WHERE 		c.book_number = ?
	AND			ezine_edition_free_review_flag = 1
	AND			dateadd(ww,4,b.ezine_dt) > getdate()
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 1388

check_cat_73 (Datasource=bookbrowse_com_new, Time=2ms, Records=1) in /root/website/queries/qry_get_free_flag_by_book_id.cfm @ 03:35:23.023
SELECT 		count(*) as "count"
    FROM    	books AS b
    INNER JOIN 	category_book_mapping AS c ON c.book_number = b.book_number
    WHERE 		b.book_number = ?
	AND			c.category_number = 73
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 1388

get_ezine_status (Datasource=bookbrowse_com_new, Time=2ms, Records=1) in /root/website/queries/qry_get_free_flag_by_book_id.cfm @ 03:35:23.023
SELECT 	top 1 g.ezine_active_flag, ezine_dt, book_title
FROM		ezine_edition_mapping AS a 
INNER JOIN	editions AS b ON (a.edition_number = b.edition_number)
INNER JOIN	books AS c ON (b.book_number = c.book_number)
INNER JOIN	ezines AS g ON (a.ezine_number = g.ezine_number)
WHERE		c.book_number = ?
ORDER BY	g.ezine_dt DESC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 1388

check_old_ezine (Datasource=bookbrowse_com_new, Time=4ms, Records=1) in /root/website/queries/qry_get_free_flag_by_book_id.cfm @ 03:35:23.023
SELECT 		count(*) as "count"
    FROM    	ezine_edition_mapping AS a
    INNER JOIN 	ezines b ON b.ezine_number = a.ezine_number
    INNER JOIN	editions c ON c.edition_number = a.edition_number
    WHERE 		c.book_number = ?
	AND			datediff(mm,b.ezine_dt,getdate()) > 12
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 1388

get_ezine_status (Datasource=bookbrowse_com_new, Time=1ms, Records=1) in /root/website/queries/qry_get_free_flag_by_book_id.cfm @ 03:35:23.023
SELECT 	top 1 g.ezine_active_flag, ezine_dt, book_title
FROM		ezine_edition_mapping AS a 
INNER JOIN	editions AS b ON (a.edition_number = b.edition_number)
INNER JOIN	books AS c ON (b.book_number = c.book_number)
INNER JOIN	ezines AS g ON (a.ezine_number = g.ezine_number)
WHERE		c.book_number = ?
ORDER BY	g.ezine_dt DESC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 1388

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

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

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

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

get_book_image (Datasource=bookbrowse_com_new, Time=1ms, Records=1) in /root/website/actions/udfs.cfm @ 03:35:23.023
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) = 1388

get_book_image (Datasource=bookbrowse_com_new, Time=4ms, Records=1) in /root/website/actions/udfs.cfm @ 03:35:23.023
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) = 1388

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

get_member_account_types (Datasource=bookbrowse_com_new, Time=3ms, Records=2) in /root/website/queries/qry_get_member_account_types.cfm @ 03:35:23.023
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=5ms, Records=0) in /root/website/queries/qry_get_arcs_for_ad.cfm @ 03:35:23.023
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=10ms, Records=3) in /root/website/queries/qry_get_arcs_for_ad.cfm @ 03:35:23.023
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=9ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 03:35:23.023
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 @ 03:35:23.023
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=9ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 03:35:23.023
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=14ms, Records=1) in /root/website/site/blocks/dsp_book_giveaway.cfm @ 03:35:23.023
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 @ 03:35:23.023
SELECT 	*
    FROM 	free_newsletters
get_ads (Datasource=bookbrowse_com_new, Time=7ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 03:35:23.023
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=8ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 03:35:23.023
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=10ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 03:35:23.023
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/excerpts/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=FREEACCESSCOUNT=1; CFGLOBALS=urltoken%3DCFID%23%3D4084401%26CFTOKEN%23%3Dd76ae236bd480eae%2D0C809BF8%2DA949%2D03D4%2DA922F610BD62CDE7%23lastvisit%3D%7Bts%20%272026%2D06%2D01%2003%3A35%3A22%27%7D%23hitcount%3D7%23timecreated%3D%7Bts%20%272026%2D06%2D01%2003%3A35%3A19%27%7D%23cftoken%3Dd76ae236bd480eae%2D0C809BF8%2DA949%2D03D4%2DA922F610BD62CDE7%23cfid%3D4084401%23; CFCLIENT_BOOKBROWSE=order%3Dp%23member%5Fnumber%3D0%23member%5Factive%5Fflag%3D0%23member%5Flogged%5Fin%5Fflag%3D0%23library%5Fuser%5Fflag%3D0%23view%3Dbooks%23; CFID=4084401; CFTOKEN=d76ae236bd480eae-0C809BF8-A949-03D4-A922F610BD62CDE7
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=/book_number/1388/maos-last-dancer
PATH_TRANSLATED=/root/website/excerpts/index.cfm
QUERY_STRING=
REMOTE_ADDR=127.0.0.1
REMOTE_HOST=127.0.0.1
REMOTE_USER=
REQUEST_METHOD=GET
SCRIPT_NAME=/excerpts/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=4084401
cftoken=d76ae236bd480eae-0C809BF8-A949-03D4-A922F610BD62CDE7
hitcount=12
lastvisit={ts '2026-06-01 03:35:23'}
library_user_flag=0
member_active_flag=0
member_logged_in_flag=0
member_number=0
order=p
timecreated={ts '2026-06-01 03:35:19'}
urltoken=CFID=4084401&CFTOKEN=d76ae236bd480eae-0C809BF8-A949-03D4-A922F610BD62CDE7
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#=4084401&CFTOKEN#=d76ae236bd480eae-0C809BF8-A949-03D4-A922F610BD62CDE7#lastvisit={ts '2026-06-01 03:35:22'}#hitcount=7#timecreated={ts '2026-06-01 03:35:19'}#cftoken=d76ae236bd480eae-0C809BF8-A949-03D4-A922F610BD62CDE7#cfid=4084401#
CFID=4084401
CFTOKEN=d76ae236bd480eae-0C809BF8-A949-03D4-A922F610BD62CDE7
FREEACCESSCOUNT=1
Session Variables:
cfid=4084401
cftoken=d76ae236bd480eae-0C809BF8-A949-03D4-A922F610BD62CDE7
sessionid=BOOKBROWSE_4084401_d76ae236bd480eae-0C809BF8-A949-03D4-A922F610BD62CDE7
urltoken=CFID=4084401&CFTOKEN=d76ae236bd480eae-0C809BF8-A949-03D4-A922F610BD62CDE7
URL Parameters:
book_number=1388
maos-last-dancer=
Debug Rendering Time: 18 ms